복붙노트

[SPRING] 봄은 목록을 autowire

SPRING

봄은 목록을 autowire

@Autowired를 목록과 함께 사용할 수 있습니까?

mimetypes 속성 파일이 있고 내 클래스 파일에 다음과 같은 내용이 있습니다.

@Autowired
private List<String> mimeTypes = new ArrayList<String>();

해결법

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

    1.Spring 4는 주어진 타입의 모든 빈을 자동으로 수집하여 콜렉션이나 배열에 삽입하는 기능을 지원합니다.

    Spring 4는 주어진 타입의 모든 빈을 자동으로 수집하여 콜렉션이나 배열에 삽입하는 기능을 지원합니다.

    예:

    @Component
    public class Car implements Vehicle {
    }
    
    @Component
    public class Bus implements Vehicle {
    }
    
    @Component
    public class User {
       @Autowired
       List<Vehicle> vehicles;//contains car and bus
    }
    

    Ref : Spring 4 Autowired Collections 주문하기

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

    2.@Qualifier ( "..")는 권장하지 않으며, 대신 autowire-by-name을 사용하여 시도하십시오

    @Qualifier ( "..")는 권장하지 않으며, 대신 autowire-by-name을 사용하여 시도하십시오

    private @Resource(name="..") List<Strings> mimeTypes;
    

    factorybean을 autowire하는 방법도 참조하십시오.

  3. ==============================

    3.봄 .xml 안에 java.util.List를 만들고 @Qualifier를 통해 이것을 애플리케이션에 주입 할 수도있다. springsource에서 http://static.springsource.org/spring/docs/current/reference/xsd-config.html :

    봄 .xml 안에 java.util.List를 만들고 @Qualifier를 통해 이것을 애플리케이션에 주입 할 수도있다. springsource에서 http://static.springsource.org/spring/docs/current/reference/xsd-config.html :

     <!-- creates a java.util.List instance with the supplied values -->
     <util:list id="emails">
       <value>pechorin@hero.org</value>
       <value>raskolnikov@slums.org</value>
       <value>stavrogin@gov.org</value>
       <value>porfiry@gov.org</value>
     </util:list>
    

    이렇게하면 배선이 다음과 같이 바뀝니다.

     @Autowired
     @Qualifier("emails")
     private List<String> mimeTypes = new ArrayList<String>();
    

    나는 어쨌든 문자열리스트를 주입하기 때문에이 접근법을 제안 할 것이다.

    건배!

    편집하다

    프로퍼티를 삽입하려면, 다음을보십시오. 어노테이션을 사용하여 구성된 스프링 빈에 프로퍼티 값을 삽입하려면 어떻게해야합니까?

  4. ==============================

    4.적어도 한정자가 필요하다고 생각합니다. 그리고 "new"에 대한 요청은 Spring을 사용하는 것에 반대되는 것으로 보인다. 봄의 역할이 혼란 스럽습니다. "new"를 호출하면 객체가 Spring의 제어를받지 못합니다.

    적어도 한정자가 필요하다고 생각합니다. 그리고 "new"에 대한 요청은 Spring을 사용하는 것에 반대되는 것으로 보인다. 봄의 역할이 혼란 스럽습니다. "new"를 호출하면 객체가 Spring의 제어를받지 못합니다.

  5. ==============================

    5.Autowire Bean이 같은 (@Configuration) 클래스에서 선언되고 다른 Bean을 선언해야하는 경우 다음과 같이 작동합니다.

    Autowire Bean이 같은 (@Configuration) 클래스에서 선언되고 다른 Bean을 선언해야하는 경우 다음과 같이 작동합니다.

    @Bean
    public BeanWithMimeTypes beanWithMimeTypes() {
        return new BeanWithMimeTypes(mimeTypes());
    }
    
    @Bean
    public List<String> mimeTypes() {
        return Arrays.<String>asList("text/html", "application/json);
    }
    

    당연히 다른 설정에서 mimeTypes 빈을 오버라이드하더라도 올바르게 동작합니다. 명시 적 @Qualifier 또는 @Resource 주석이 필요 없습니다.

  6. ==============================

    6.목록이 빈인 한 autowire 할 수 있어야합니다. 그런 다음 @Qualifier를 사용하여 Spring에게 사용할 bean / list를 알려줄 것이다. http://static.springsource.org/spring/docs/3.0.x/reference/beans.html#beans-autowired-annotation-qualifiers를 참조하십시오.

    목록이 빈인 한 autowire 할 수 있어야합니다. 그런 다음 @Qualifier를 사용하여 Spring에게 사용할 bean / list를 알려줄 것이다. http://static.springsource.org/spring/docs/3.0.x/reference/beans.html#beans-autowired-annotation-qualifiers를 참조하십시오.

  7. from https://stackoverflow.com/questions/6267138/spring-autowire-a-list by cc-by-sa and MIT license