오늘의 키워드
- Spring Layer 3 계층
- IoC(제어의 역전), DI(의존성 주입)
- IoC Container와 Bean
- ORM(Object-Relational Mapping)
- JPA(Java Persistence API)
오늘의 내용
- Spring의 3 Layer Architecture
- Controller, Service, Repository로 처리과정을 분리한다
- Controller : 클라이언트의 요청을 받고 Request 데이터가 있다면 Service에 같이 전달하고 Service에서 처리 완료된 결과를 클라이언트에게 응답한다
- Service : 사용자의 요구사항을 처리한다. DB 저장 및 조회가 필요할 때는 Repository에게 요청한다
- Repository : DB관리(연결, 해제, 자원관리)를 하고 CRUD작업을 처리한다
- IoC(제어의 역전)와 DI(의존성 주입)
- IoC는 설계 원칙이고 DI는 디자인 패턴을 말한다
- IoC, DI는 객체지향의 SOLID 원칙 그리고 GoF의 디자인 패턴과 같은 설계 원칙 및 디자인 패턴이다
- 좋은 코드의 조건
- 논리가 간단해야 한다
- 중복을 제거하고 표현을 명확하게 해야 한다
- 코드를 처음 보는 사람도 쉽게 이해하고 수정할 수 있어야 한다
- 의존성을 최소화해야 한다
- 새로운 기능을 추가하더라도 구종의 변경이 크지 않아야 한다
- IoC Container와 Bean
- Bean : Spring이 관리하는 객체를 말한다
- Spring Ioc Container : Bean을 모아둔 컨테이너
- Spring 'Bean' 등록 방법
- @Component를 Bean으로 등록하고자 하는 클래스 위에 설정한다
- Spring 서버가 뜰 때 IoC 컨테이너에 Bean을 저장해주는데 @Component가 설정된 클래스에 대해서 Spring이 해주는 일을 확인한다
- Spring 'Bean' 이름: 클래스의 앞글자만 소문자로 변경한다
- 'Bean' 아이콘 확인(콩모양) → 스프링 IoC에서 관리할 'Bean' 클래스라는 표시다
- @ComponentScan : Spring 서버가 뜰 때 @ComponentScan에 설정해 준 packages 위치와 하위 packages 들을 전부 확인하여 @Component가 설정된 클래스들을 ‘Bean’으로 등록해 준다
- @SpringBootApplication에 의해 default 설정이 된다
- Spring 'Bean' 사용 방법
- @Autowired를 필드 위에 작성한다
- Bean을 주입할 때 사용할 메서드 위에 @Autowired를 입력한다
- @Autowired는 Spring Ioc 컨테이너에 의해 관리되는 클래스에서만 가능하다
- @Autowired생략이 가능한데 Spring 4.3 버전부터 지원하고 생성자 선언이 1개일 때만 가능하다
- 3 Layer Annotation
- pring 3 Layer Annotation은 Controller, Service, Repository의 역할로 구분된 클래스들을 ‘Bean’으로 등록할 때 해당 ‘Bean’ 클래스의 역할을 명시하기 위해 사용된다
- @Controller, @RestController
- @Service
- @Repository
- ORM과 JPA
- ORM(Object-Relational Mapping) : 객체와 DB의 관계를 매핑해주는 도구
- JPA(Java Persistence API) : 자바 ORM기술에 대한 표준 명세
오늘의 회고
- 강의를 진행할수록 Spring이 점점 낯설어진다...... 이게 Java와 연관이 있는 건 맞는지 의구심조차 들기 시작한다.....
- 이래서 개인프로젝트 완성이나 할 수 있을까 흠....
'TIL' 카테고리의 다른 글
내일배움캠프 5주차 Java 컬렉션 (0) | 2024.05.17 |
---|---|
내일배움캠프 5주차 Spring Data JPA (0) | 2024.05.16 |
내일배움캠프 5주차 Spring MVC 디자인 패턴, 정적페이지 (0) | 2024.05.14 |
내일배움캠프 5주차 API, HTTP, 테스트 코드 ..... (0) | 2024.05.13 |
내일배움캠프 4주차 Call by Value, Call by Reference, ... (0) | 2024.05.09 |