본문 바로가기
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