Java 기반 컨테이너(Container) 설정

grapefruit·2022년 10월 19일
0

BE 2022-10.10~10.14

목록 보기
8/8
post-thumbnail

👨🏻‍💻@Bean and @Configuration

자바 기반 설정의 가장 중요 애너테이션 2가지

  • @Configuration

  • @Bean

// DependencyConfig 클래스
컨텍스트를 인스턴스화할 때
@Configuration
public class DependencyConfig {
@Bean
public MyService myService() {
    return new MyServiceImpl();
}
  • XML 설정 방식
<beans>
    <bean id="myService" class="com.acme.services.MyServiceImpl"/>
</beans>

👨🏻‍💻@Bean 애너테이션을 사용하기

빈 선언

  • @Bean 애너테이션을 메서드에 추가해서 Bean으로 정의(선언)할 수 있다.

애너테이션 방식의 configuration

@Configuration
public class DependencyConfig {
   @Bean
   public TransferServiceImpl transferService() {
   return new TransferServiceImpl();
    }
}

빈 정의가 있는 인터페이스를 구현하여 bean configuration을 설정할 수 있다.

public interface BaseConfig {

    @Bean
    default TransferServiceImpl transferService() {
        return new TransferServiceImpl();
    }
}

@Configuration
public class DependencyConfig implements BaseConfig {

}

👨🏻‍💻@Configuration 애너테이션을 사용하기

  • @Configuration는 해당 객체가 bean definitions의 소스임을 나타내는 애너테이션이다.

  • @Configuration는 @Bean-annoted 메서드를 통해 bean을 선언한다.

  • @Configuration 클래스의 @Bean 메서드에 대한 호출을 사용하여 bean 사이의 의존성을 정의할 수도 있다.

👨🏻‍💻Bean 사이에 의존성 주입

빈이 서로 의존성을 가질 때, 의존성을 표현하는 것은 다른 bean 메서드를 호출하는 것처럼 간단하다.

beanOne은 생성자 주입을 통해 beenTwo에 대한 참조를 받는다.

@Configuration
public class DependencyConfig {

    @Bean
    public BeanOne beanOne() {
        return new BeanOne(beanTwo());
    }

    @Bean
    public BeanTwo beanTwo() {
        return new BeanTwo();
    }
}



profile
개발자몽

0개의 댓글