에 ConfigurationProperties 콩 작동하지 아래 빈 :를 autowire 내가 아래 개체의 목록이있는 application.yml 파일이 봄
MailBoxProperties.java 나는 위의 설정을 주입하려는
@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)를 제공하려고 시도했지만, 실제 빈 경로와 null이있는 빈이 2 개 생성된다는 예외가 발생합니다. @Import() {MailBoxProperties.class}를 시도했습니다.
하지만 주입은 내 응용 프로그램 클래스에서 다음과 같이 완벽하게 작동합니다. 빈을 가져 와서 사서함 이름을 올바르게 인쇄합니다.
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
가 감사를 사용하고 있습니다.
'null'는'getMailBoxProperties' 봄 전의 한 필드를 자동 와이어 연결로 변경하십시오. –