복붙노트

[SPRING] Spring의 Java 설정 내에서 bean을 Autowire

SPRING

Spring의 Java 설정 내에서 bean을 Autowire

Java로 작성된 Spring 구성 내에서 Spring의 @Autowired 주석을 사용할 수 있습니까?

예 :

@Configuration
public class SpringConfiguration{

   @Autowired 
   DataSource datasource;

   @Bean
   public DataSource dataSource(){
       return new dataSource();
   }

   // ...

}

분명히 DataSource 인터페이스는 직접 인스턴스화 될 수 없지만 단순화를 위해 여기에 직접 인스턴스화했습니다. 현재, 위의 시도 할 때 데이터 원본 개체가 null로 남아 있으며 스프링에 의해 autowired 있지 않습니다.

@Autowired가 FactoryBean 를 반환함으로써 Hibernate SessionFactory 객체로 성공적으로 작업 할 수있게되었습니다.

그래서 내 질문에 구체적으로 : 데이터 소스와 관련하여이를 수행 할 수있는 방법이 있습니까? 또는 더 일반적으로 Spring Java Configuration 내에서 bean을 autowire하는 방법은 무엇입니까?

스프링 버전 3.2를 사용하고 있음에 유의해야합니다.

해결법

  1. ==============================

    1.동일한 @Configuration 파일 내에서 DataSource bean에 대한 참조가 필요하면 bean 메소드를 호출하기 만하면된다.

    동일한 @Configuration 파일 내에서 DataSource bean에 대한 참조가 필요하면 bean 메소드를 호출하기 만하면된다.

    @Bean
    public OtherBean someOtherBean() {
        return new OtherBean(dataSource());
    }
    

    또는 @Bean 메소드에 자동으로 추가시켜야합니다.

    @Bean
    public OtherBean someOtherBean(DataSource dataSource) {
        return new OtherBean(dataSource);
    }
    

    @Configuration 클래스의 라이프 사이클은 사용자가 제안하는 것처럼 자동 와이어 링을 방지하는 경우가 있습니다.

  2. ==============================

    2.어쩌면 당신은 @Autowired가 설정 파일에서 올바로 동작하지 않는 반면에 컨스 트럭 터를 사용하여 다른 설정 파일의 빈을 당신의 설정에 주입 할 수있다.

    어쩌면 당신은 @Autowired가 설정 파일에서 올바로 동작하지 않는 반면에 컨스 트럭 터를 사용하여 다른 설정 파일의 빈을 당신의 설정에 주입 할 수있다.

    @Configuration
    public class AppConfig {
      private DataSource dataSource;
    
      public AppConfig(DataSource dataSource) {
        this.dataSource = dataSource;
      }
    
      @Bean
      public OtherBean otherBean(){
        return new OtherBean(dataSource);
      }
    }
    
  3. ==============================

    3.@Configuration 클래스로 구성된 bean은 autowired 될 수 없으며,

    @Configuration 클래스로 구성된 bean은 autowired 될 수 없으며,

    따라서 @Autowiring과 @configuration을 함께 사용할 수는 없습니다.

  4. from https://stackoverflow.com/questions/28747743/autowire-a-bean-within-springs-java-configuration by cc-by-sa and MIT license