Spring

빈과 의존관계

chojdsj 2023. 11. 25. 15:41
728x90

 

 

 

 

컴포넌트 스캔과 자동 의존관계 설정

 

 

 

 

- 생성자에 @Autowired 가있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서넣어준다. 이렇게 객체 의존관계를 외부에서 넣어주는 것을 DI (Dependency Injection), 의존성 주입 이라고 한다.

 

 

 

* 컴포넌트스캔 원리


- @Component 애노테이션이 있으면 스프링 빈으로 자동 등록된다.


- @Controller 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트스캔 때문이다.

 

 

-> 컨트롤러에 들어가서 보면 @Component 애노테이션이 있는 것을 확인할 수 있다.

 

 

 

- @Component 를포함하는다음 애노테이션도스프링 빈으로 자동등록된다. 

 

1) @Controller
2) @Service
3) @Repository

 

 

 

 

자바 코드로 직접 스프링 빈 등록하기

 

 

 

- SpringConfig  클래스를 따로 하나 만들고, 이 클래스에서 빈(Bean)을 설정하고 관리하는 역할을 한다.

 

- @Configuration  애노테이션은 해당 클래스가 스프링의 설정 클래스임 나타낸다.

 

- @Bean 애노테이션은 메소드가 스프링 빈을 생성하고 반환하는 메소드임을 나타냅니다. 이 메소드들은 스프링 컨테이너에 의해 호출되어 해당 빈을 관리합니다.

 

- 실무에서는주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드는 컴포넌트스캔을 사용한다. 그리고 정형화 되지 않거나, 상황에 따라 구현클래스를 변경해야 하면 위와 같이 설정을 통해 스프링 빈으로 등록한다.