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 등록시 주의 사항
스프링은 스프링 컨테이너에 스프링 빈 등록 시, 기본으로 싱글톤으로 등록
'SpringBoot > 공부' 카테고리의 다른 글
[SpringBoot] spring-boot-devtools 라이브러리 사용 방법 (0) | 2023.12.14 |
---|---|
[SpringBoot] 프로젝트 생성 시 run 오류 (0) | 2023.12.13 |
build.gradle dependencies 추가할 경우 주의 사항 (2) | 2023.12.06 |
@Conditional 어노테이션이란 ? (2) | 2023.11.30 |
[스프링 부트] 의존성 확인하기 (0) | 2023.11.29 |