본문 바로가기
TOP BOTTOM
1. 프로그래밍/Spring

[스프링 입문] 5. 스프링 빈, 의존 관계

by mola23 2022. 2. 13.

강의

 

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으로 노출되어 있음 

 

댓글