Я использую приведенную ниже конфигурационную настройку. Класс @configuration загружает файл свойств, а затем создается созданный arraylist, который извлекает соответствующие фрагменты файла свойств так, что классы, которые зависят от barUserList и fooUserList, могут легко потреблять. Они даже не знают, что это произошло из файла собственности. Huzzah для DI!Как установить @Qualifier без XML в Spring 3+
Моя проблема возникает, когда я пытаюсь рассказать весне, какой из них я хочу. Класс Foo хочет fooUserList, поэтому я должен иметь возможность использовать аннотацию @Qualifier, но я не могу найти способ/set/квалификатор вне XML.
Итак, мой вопрос в том, как установить квалификатор для этих двух весенних бобы в Джаваланде? Конфигурация Zero XML - большая цель для меня. Я знаю, что вы можете установить @name, а механизм @qualifier для Spring по умолчанию будет @name, но я бы хотел избежать этого. Мне не нравятся вещи, которые «дефолт» для других вещей.
Я использую Весна 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', поскольку имя метода используется, когда имя не указано. Я не люблю использовать строки, так как они становятся довольно сложными в рефакторингах, что я обычно делаю, это определить аннотацию классификатора и использовать его для привязки создания '@ Bean' к использованию' @ Autowired', вы можете подробнее [здесь] (http://docs.spring.io/spring/docs/3.0.x/reference/beans.html#beans-autowired-annotation-qualifiers), в этом примере определите аннотацию с именем '@ Offline' , –
Хорошо, я проверю это! Благодарю. – Jazzepi