강의
1. 스프링 빈 등록 - 2가지 방법
- 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 싱글톤으로 등록한다.
-> 같은 스프링 빈이면 모두 같은 인스턴스이다.
@Component를 스프링이 뜰 때, 다 스프링 컨테이너에 등록함
- 스프링 컨테이너가 @Component(Controller, Service, Repository)가 붙은 클래스를 객체로 생성해서 스프링 빈으로 관리함 == 스프링 컨테이너에 등록됨
1) 컴포넌트 스캔 + 자동 의존관계 설정
@Controller, @Service, @Repository
@Component 를 객체로 생성해서 스프링 컨테이너에 등록함
- Controller, Service, Repository ⊃ Component
... Service는 Component의 특수한 case
2) 자바 코드로 직접 스프링 빈 등록
(SpringConfig 클래스에) @Configuration 을 붙이고, 빈으로 등록할 객체? 앞에는 @Bean 붙임
- @Controller는 사용하지만, @Service와 @Repository는 사용하지 않음
2. 의존 관계 주입(DI; Dependency Injection) - 3가지
@Autowired
: 자동 의존 관계 주입
@Autowired가 붙은 생성자를 호출
@Autowired가 붙어 있으면 스프링이 스프링 컨테이너에서 관리하는 객체를 주입
- 스프링 빈에 등록하지 않으면 @Autowired를 통한 DI는 동작하지 않음
1) 생성자 주입 : @Autowired 생성자
- 가장 권장
- application이 조립(로딩)될 때, 이용되기 때문
- 생성자가 1개만 있으면, @Autowired 생략 가능
2) 필드 주입 : @Autowired 필드
- 권장하지 않음
- 변경 불가능하기 때문
3) Setter 주입
- 권장하지 않음
- application이 로딩될 때만 필요한데, 불필요하게 public으로 노출되어 있음
'1. 프로그래밍 > Spring' 카테고리의 다른 글
[스프링 입문] 7. AOP(Aspect Oriented Programming) (0) | 2022.02.27 |
---|---|
[스프링 입문] 6. 스프링 DB 접근 기술 (0) | 2022.02.27 |
[스프링 입문] 4. TestCase 작성 (0) | 2022.02.13 |
[스프링 입문] 3. 웹 개발 3가지 + 웹 애플리케이션 계층 구조 (0) | 2022.02.13 |
[스프링 입문] 2. Controller+View, 빌드 방법 (0) | 2022.02.13 |
댓글