아래의 구성 설정을 사용하고 있습니다. @configuration 클래스는 프로퍼티 파일을로드하고 barUserList 및 fooUserList에 의존하는 클래스가 쉽게 소비 할 수있는 방식으로 프로퍼티 파일의 관련 청크를 추출하는 arraylist를 생성합니다. 그들은 속성 파일에서 온 것인지도 모릅니다. DI를 위해 Huzzah!스프링 3+에서 XML없이 @Qualifier를 설정하는 방법
나는 봄에 내가 원하는 것을 말하려고 할 때 내 문제가 생긴다. Foo 클래스는 fooUserList를 원하므로 @Qualifier 주석을 사용할 수 있어야하지만 XML 외부에서/set/한정자를 찾을 수는 없습니다.
제 질문은 이것입니다. Javaland에서이 두 개의 Spring 빈에 대한 한정자를 어떻게 설정합니까? 제로 XML 설정은 나를 위해 큰 목표입니다. 나는 당신이 @name을 설정할 수 있고 @qualifier 메커니즘이 @name으로 기본 될 것이라는 것을 알고 있지만, 나는 이것을 사용하지 않을 것이다. 나는 다른 것들을 "기본"으로하는 것을 좋아하지 않습니다.
다음과 같이 나는 @Qualifier
에 @Bean
의 이름을 정의하고 그것을 사용하여 할 수있는 봄 3.2.5.RELEASE에게
@Configuration
public class AppConfig {
@Bean
Properties loadProperties() throws IOException {
Properties properties = new Properties();
properties.load(new FileInputStream("checker.properties"));
return properties;
}
@Bean
@Autowired
ArrayList<String> barUserList(Properties properties) {
ArrayList<String> barUsernames = new ArrayList<String>();
Collections.addAll(barUsernames, properties.getProperty("site.bar.watchedUsernames", "").split(","));
return barUsernames;
}
@Bean
@Autowired
ArrayList<String> fooUserList(Properties properties) {
ArrayList<String> fooUsernames = new ArrayList<String>();
Collections.addAll(fooUsernames, properties.getProperty("site.foo.watchedUsernames", "").split(","));
return fooUsernames;
}
}
이름은 모두 무엇에 익숙합니까? 나는 다른 무엇보다도 "쾅쾅"할 것인가? 아니면 실제로 내 용도로 사용되지 않는 이름입니까? 이름을 기반으로 한 Autowiring을 할 계획이 아닙니다. – Jazzepi
이 경우 이름은'List'의 어느 인스턴스가 사용되는지 정의하는데 사용됩니다. 여러분의 경우에는 이름이 주어지지 않을 때 메소드의 이름이 사용되기 때문에'@ Bean'에서 이름을 빼낼 수 있습니다. 나는 리팩토링에서 꽤 복잡해지기 때문에 문자열을 사용하는 것을 좋아하지 않는다. 일반적으로 한정자 주석을 정의하고 그것을'@Buan' 생성을'@ Autowired' 바인딩에 바인딩하는 데 사용한다. [here] (http://docs.spring.io/spring/docs/3.0.x/reference/beans.html#beans-autowired-annotation-qualifiers)에 대한 자세한 내용은 예제에서 '@ Offline'이라는 주석을 정의하십시오. . –
확인해 보겠습니다. 감사. – Jazzepi