본문 바로가기
Study/Java

[Spring Boot] 스프링 컨테이너, @Bean, @Component

by _royJang 2022. 3. 29.

스프링 프로젝트에서 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