Spring Bean이란?
Spring에서 Bean은 Spring IoC 컨테이너에 의해 관리되는 Java Object
또한, Spring에서는 등록되어 있는 Bean을 싱글톤 객체로 생성하여 관리
코드 중에 new 연산자로 객체를 생성한 경우 그 객체는 Spring IoC 컨테이너에 의해 관리되지 않기 때문에 Bean이라고 할 수 없음
Spring IoC 컨테이너란?
Spring IoC 컨테이너는 인스턴스의 생명주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 제공
그 중 의존성 주입도 있음
단, 의존성 주입을 받으려면 전제 조건으로 빈이 되어야 함
그래서 Bean 어떻게 등록하는데!
Bean 등록하는 방법
1. 수동 등록
방법
설정 클래스에 @Configuration 어노테이션을 붙이고, 메소드에 @Bean 어노테이션 붙임
주의 사항
- Bean 이름은 메서드 이름으로 생성 -> 중복 주의
- @Configuration 안에서 @Bean을 사용해야 싱글톤 보장
- 이유
@Configuration이 붙었을때의 결과를 보면 CGLIB라는게 붙은걸 볼수있다.
사실 이것은 내가 만든 클래스가 아닌 스프링에서 CGLIB라는 바이트코드 조작 라이브러리를 사용해서 AppConfig를 상속받은 임의의 클래스를 만들고 그것을 스프링 빈으로 등록했기 때문에 이런결과가 나오게 된다.
이때 임의의 클래스를 통해서 싱글톤이 되는것을 유지해준다.
언제 사용해야 될까?
- 애플리케이션에 광범위하게 영향을 주는 경우 (설정 정보를 명확하게 나타내야 유지보수하기 좋음)
- 다형성을 활용하여 여러 구현체를 등록해주어야 할 때 (어떤 빈들이 조회되어 주입되는지, 각 이름은 무엇인지 쉽게 파악 가능)
2. 자동 등록
방법
클래스에 @Component 어노테이션 붙임
@Component를 갖는 어노테이션 : @Controller, @Service, @Repository
과정
Spring이 Component Scan을 통해 @Component 어노테이션이 있는 클래스를 찾아 자동으로 빈 등록
언제 사용?
기본적으로 자동 빈 등록 방식 권장, 클래스에 있는 @Component만 보아도 빈으로 등록되었는지 확인이 가능하기 때문
'CS' 카테고리의 다른 글
[CS] Spring Filter (0) | 2024.04.30 |
---|---|
[CS] Spring DI란? (0) | 2024.04.30 |
[CS 스터디] Spring (0) | 2024.04.29 |
[CS 스터디] Java(자바) (0) | 2024.04.17 |
[CS 스터디] 알고리즘(Algorithm) (0) | 2024.04.08 |