복붙노트

[SPRING] CDI의 Instance 또는 Guices Provider에 해당하는 Spring은 무엇입니까?

SPRING

CDI의 Instance 또는 Guices Provider에 해당하는 Spring은 무엇입니까?

CDI에서 다음을 사용하여 특정 유형의 항목을 제공 할 객체를 정의 할 수 있습니다.

@ 주입 인스턴스 myObjectInstance; // ... MyObject myObjectInstance.get ();

마찬가지로 Guice에서 할 수있는 일 :

@ 주입 공급자 myObjectInstance; // ... MyObject myObjectInstance.get ();

스프링에 비슷한 구조가 있는지 궁금하거나 참조를 얻기 위해 ApplicationContext를 사용해야합니까?

해결법

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

    1.그래서 주위를 파고 들자 Spring이 JSR-330을 지원한다는 것을 알게되었다. 이 JSR은 여러 가지 종속성 삽입 인터페이스, 주석 및 동작을 표준화하는 간단한 API를 정의합니다. 전체 사양은 그대로이 API입니다.

    그래서 주위를 파고 들자 Spring이 JSR-330을 지원한다는 것을 알게되었다. 이 JSR은 여러 가지 종속성 삽입 인터페이스, 주석 및 동작을 표준화하는 간단한 API를 정의합니다. 전체 사양은 그대로이 API입니다.

    Spring의 FactoryBean과는 달리 javax.inject.Provider 인터페이스는 Bean 참조를 가져올 때 Exception을 발생시키지 않습니다. 게다가, 당신은 여전히 ​​어떤 곳에서이 FactoryBean을 정의 할 필요가 있습니다 (XML 읽기 또는 @Configuration 클래스, 그리고 이것은 차선책입니다).

    버그 때문에, 현재의 Spring 3.1.1에서 javax.inject.Provider는 작동하지 않습니다. 그것은 스프링 3.1.0에서 작동합니다.

    이것을 사용하려면 javax.inject 항아리를 포함시킬 필요가 있습니다. Maven을 사용한다면 다음을 할 수 있습니다 :

        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>
    

    Spring은 그것을 감지하고 그 순간부터 간단하게 다음을 할 수 있습니다 :

    @Inject
    Provider<MyObject> myObjectInstance;
    //...
    MyObject myObjectInstance.get();
    

    Guice 예제와 마찬가지로, 동일한 API이기 때문입니다.

    콘스탄틴에 대한 나의 이전 코멘트에도 불구하고, 스프링은 그 자체로 공급자를 생성합니다. (나는 스프링 3.1.1에 대해 테스트 중이었고이 스프링 공급자 회귀 문제를 겪었다)

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

    2.FactoryBean처럼 들립니다.

    FactoryBean처럼 들립니다.

  3. from https://stackoverflow.com/questions/10538528/what-is-the-spring-equivalent-for-cdis-instance-or-guices-provider by cc-by-sa and MIT license