Bean이란 ?

스프링 컨테이너에 등록한 객체들을 Bean 이라고 한다

 

자바 어플리케이션은 어플리케이션 동작을 제공하는 객체들로 이루어져 있어

객체들이 서로 상호작용하며 동작하느데 이때, 상호작용하는 객체를 '객체의 의존성'이라고 표현한다

 

 

 

Bean의 특징

  • @Configuration 설정된 클래스의 메소드에서 사용 가능
  • 메소드의 리턴 객체가 스프링 빈 객체임을 선언
  • 빈의 이름은 기본적으로 메소드의 이름
  • @Bean(name = "name")으로 이름 변경 가능
  • @Scope를 통해 객체 생성 조정 가능
  • @Component 어노테이션을 통해 @Comfiguration 없이 빈 생성 가능
  • 빈 객체에 init(). destory() 등 라이프사이클 메소드를 추가한 다음 @Bean에서 지정 가능

 

Bean 등록 2 가지

 

첫번째. 컴포넌트 스캔과 자동 의존관계 설정

클래스 선언부 위에 @Component 어노페이션 사용

 

@Service, @controller, @Repository 모두 @Component를 상속받고 있으며,

해당 어노테이션으로 등록된 클래스들은 스프링 컨테이너에 의해 자동으로 생성되어 스프링 빈을 등록된다

 

두번째. 자바 코드로 직접 스프링 빈 등록

수동으로 스프링 빈을 등록하려면 자바 설정 클래스를 만들어 사용

 

1.설정 클래스를 만들고

2.@Configuration 어노테이션을 클래스 선언부 위에 추가

3. 특정 타입을 리턴하는 메소드 만들고

4. @Bean 어노테이션을 붙여주면 자동으로 해당 타입의 빈 객체 생성됨

 

 

 

1번 방법이 간단하고 많이 사용되지만, 2번 방법도 사용에 따라 사용됨

 

- @Autowired

생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어줌

이렇게 객체 의존관계를 외부에서 넣어주는 것을 '의존성 주입(DI)'이라고 한다

 

** Bean 등록시 주의 사항

스프링은 스프링 컨테이너에 스프링 빈 등록 시, 기본으로 싱글톤으로 등록

 

+ Recent posts