스프링 프로젝트에서 Configuration 관련 코드를 스프링 컨테이너에 Bean으로 등록시키는 데는 2가지 방법이 있다. 어노테이션 Bean을 사용하는 방법과 어노테이션 Component를 사용하는 방법이 그것이다. 해당 포스팅에서는 스프링 컨테이너, @Bean, @Component, 그리고 스프링 컨테이너에 등록된 Bean을 가져오는 방법을 기록해 보려 한다.
스프링 컨테이너 생성 방법
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
- ApplicationContext를 스프링 컨테이너라 한다.
- ApplicationContext는 인터페이스이다.
- AnnotationConfigApplicationContext는 ApplicationContext를 구현한 것이다.
- 개발자가 구성한 AppConfig를 스프링 컨테이너에 담고 이를 변수 applicationContext에 저장한 것이다.
- 스프링 컨테이너는 스프링 빈을 Key:Value(빈 이름 : 빈 객체)로 저장한다.
@Bean을 사용하여 스프링 컨테이너에 Bean 등록
@Configuration
public class AppConfig {
@Bean
public Repository repository() {
return new TestRepository();
}
}
- 빈 이름은 메서드 이름을 사용한다 (ex -> repository(메서드 이름) : TestRepository(리턴 객체))
@Component를 사용하여 스프링 컨테이너에 Bean 등록
//AppConfig.java
@Configuration
@ComponentScan
public class AppConfig {
}
//Repository.java
@Component
public class TestRepository implements Repository {
}
- @Component 가 붙은 모든 클래스를 스프링 빈으로 등록
- 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자 사용
- 의존관계 자동 주입 작업이 필요한 경우 해당 클래스의 생성자에 @Autowired 추가
스프링 컨테이너에 등록된 Bean을 가져오는 방법.
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
Repository repo = ac.getBean(Repository.class);
@Bean
개인 공부를 기록하기 위한 포스팅입니다.
틀린 점이 있다면 지적 부탁드립니다.
@참조
김영한님의 스프링 핵심 원리 - 기본편 강좌를 기반으로.
'Study > Java' 카테고리의 다른 글
[Spring Tip] 엔티티 설계시 주의점 (1) | 2022.10.03 |
---|---|
[JPA] 키워드 (0) | 2022.10.02 |
[JAVA, JPA, SPRING] 어노테이션 모음집 (0) | 2022.09.30 |