我正在尝试将值注入到这样的字段中:
@Component
@ConfigurationProperties("paypal")
public class Paypal
{
private List<List<List<String>>> deleterequest;
public List<List<List<String>>> getDeleterequest()
{
return deleterequest;
}
public void setDeleterequest(List<List<List<String>>> deleterequest)
{
this.deleterequest = deleterequest;
}
private String date;
public String getDate()
{
return date;
}
public void setDate(String date)
{
this.date = date;
}
}
注意:Paypal bean本身已成功加载,而不是null。 使用@Value读取值可以在该类中正常工作。我的主要课程也注明了:
@EnableConfigurationProperties
但是date和deleterequest在这段代码中都保持为null:
@Autowired
private Paypal propsPayPal;
this.propsPayPal.getDeleterequest(); //returns null (no NPE!)
this.propsPayPal.getDate(); //returns null (no NPE!)
在Spring Java Config中我写道:
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer()
{
PropertySourcesPlaceholderConfigurer o = new PropertySourcesPlaceholderConfigurer();
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource(Constants.PROPERTIES_FILE_NAME));
o.setProperties(yaml.getObject());
return o;
}
@Bean
public Paypal paypal()
{
return new Paypal();
}
我的 application.yml 如下所示:
paypal:
date: Datum
deleterequest:
-
-
- Typ
- Allgemeine Abbuchung
-
- Status
- Abgeschlossen
任何帮助?
编辑:我发现当我使用AnnotationConfigApplicationContext(在我的主程序中使用)创建一个新的Spring项目(仅用于测试此问题)作为Context时,它没有注入任何值。使用ConfigurableApplicationContext(通过.SpringApplication.run(...))可以很好地工作,变量将被注入。我必须让它在AnnotationConfigApplicationContext上工作。
答案 0 :(得分:0)
解决方案是切换到ConfigurableApplicationContext。 我使用了AnnotationConfigApplicationContext,它不支持此功能。