でConfigurationProperties豆のために働いていない私は以下のようにオブジェクトのリストを持っているapplication.ymlファイルがあります:私は、これらの特性を有することがMailBoxPropertiesと呼ばれる春の設定クラスを作成しているAutowired春
outlook:
mailboxes:
- id: m1
name: mailbox1
- id: m2
name: mailbox2
を以下のようにビーン:
MailBoxProperties.java Iは、上記の設定を注入したい
@ConfigurationProperties(prefix = "outlook")
@Configuration
public class MailBoxProperties {
private List<MailBox> mailboxes;
public MailBoxProperties() {
}
public MailBoxProperties(List<MailBox> mailboxes) {
this.mailboxes = mailboxes;
}
public void setMailBoxes(List<MailBox> mailboxes) {
this.mailboxes = mailboxes;
}
public List<MailBox> getMailBoxes() {
return mailboxes;
}
public static class MailBox {
public String getName() {
return this.name;
}
public String getId() {
return this.id;
}
private String id, name;
public MailBox() {
}
public MailBox(String id, String name) {
this.id = id;
this.name = name;
}
}
}
以下のような別のコンフィギュレーションクラスにビーン:
OutlookConnectionManager.java
@Configuration
@EnableConfigurationProperties
public class OutlookConnectionManager{
@Autowired
private MailBoxProperties mailBoxProperties;
private List<String> names;
@Bean
public OutlookConnectionManager getOutlookConnectionManager() {
OutlookConnectionManager outlookConnectionManager = new OutlookConnectionManager();
outlookConnectionManager.getMailBoxProperties();
return outlookConnectionManager;
}
public void getMailBoxProperties() {
names = new ArrayList<String>();
for(MailBox mail: mailBoxProperties.getMailBoxes()) {
this.names.add(mail.getName());
}
}
}
しかし、MailBoxPropertiesは常にnullでgetMailBoxPropertiesから()を呼び出すmailBoxProperties.getMailBoxesにヌル・ポインタ例外をスローします。
@Configuration @EnableConfigurationProperties(MailBoxProperties.class)を与えようとしましたが、2つのBeanが作成されたことを示す例外がスローされます。 @Import(){MailBoxProperties.class}を試しました。
しかし、注入は以下のように私のメインアプリケーションクラスで完全に機能します: これは、Beanを取り出してメールボックス名を正しく出力します。
MailApplication.java
@SpringBootApplication
public class MailApplication {
public static void main(String[] args) {
ApplicationContext context = new SpringApplicationBuilder(MailApplication.class).run(args);
MailBoxProperties props = context.getBean(MailBoxProperties.class);
props. getMailBoxes()
.forEach(cc -> System.out.println(cc.getName()));
}
}
私はOutlookConnectionManager.javaのいずれかの設定をしないのですか?助けてください。
注: 私は春ブーツ1.5.7.RELEASE
はありがとうを使用しています。
春がきた前にあなたがトンコール 'getMailBoxProperties'をしようとしているので、それは' null'なのでありますフィールドの自動配線に変更します。 –