我在使用@ConfigurationProperties功能时遇到问题。 可能,我遗漏了一些东西,因为这个机制看起来很简单,但对我来说,它不起作用。
我使用Spring Boot和以下主要的Application类
@SpringBootApplication
@EnableAspectJAutoProxy
@EnableConfigurationProperties(QueuesProperties.class)
@PropertySource("file:config/queues.properties")
@ImportResource("classpath:/spring-config.xml")
public class Application {
public static void main(String... args) {
ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args);
}
}
使用QueuesProperties
@ConfigurationProperties(prefix = "wmq.in.queue")
public class QueuesProperties {
private static final Logger LOGGER = LoggerFactory.getLogger(QueuesProperties.class);
private String descr;
public String getDescr() {
return descr;
}
public void setDescr(String descr) {
this.descr = descr;
}
}
属性文件非常简单(我试图找出问题所在)
wmq.in.queue.descr = description
然后,我试图在一个@Component中@Autowired QueuesProperties,我在弹簧集成流中使用了一个。
QueuesProperties已正确注入,但descr
属性为null。
@Autowired
private QueuesProperties queuesConfiguration;
虽然这个
@Value("${wmq.in.queue.descr}")
private String descr;
已正确评估。
我已经尝试了不同的配置或代码,但结果是一样的。我得到了QueuesProperties bean,但没有填充它。
我错过了什么?
答案 0 :(得分:1)
如果在applciation.properties文件中编写wmq.in.queue.descr = description
属性,那么阅读问题的方法并不十分清楚。我之所以这么说是因为您说使用@Value
而不是
@Autowired
private QueuesProperties queuesConfiguration;
即使@PropertySource("file:config/queues.properties")
让我认为你的wmq.in.queue.descr = description
属性可能不是用applciation.properties编写的,而是写在file:config / queues.properties中。
求和
对于使用@ConfigurationProperties
功能,您已在application.properties中编写属性,并在@ Component,@ Configuration等上使用@EnableConfigurationProperties(QueuesProperties.class)
,以及如下所示的带注释的类。
@Component
@EnableConfigurationProperties(QueuesProperties.class)
public class YourBean {
....
private final QueuesProperties queuesProperties;
public YourBean(QueuesProperties queuesProperties){
this.queuesProperties = queuesProperties;
}
.....
}
实际上你可以更改application.properties文件名自定义spring boot属性评估但是对于你的本地应用程序我不鼓励。我认为application.properties是一个很好的名称,用于命名放置应用程序配置属性的位置
我希望它可以帮到你