2017-10-18 104 views
0

我有它使用SpringBoot和填充从queues.properties文件以下列方式一个POJO项目(这将被用来作为一个依赖):如何获得Spring Boot注释并在普通的Spring应用程序中执行?

@Component 
@PropertySource({"classpath:queues.properties"}) 
@ConfigurationProperties("queue") 
public class QueuesConfig { 

private String messagingBrokerXml; 
private String messagingBrokerJolokia; 
private String messagingBrokerApi; 
private List<QueuesConfig.QueueModel> queues = new ArrayList(); 

public QueuesConfig() { 
} 

public String getMessagingBrokerXml() { 
    return this.messagingBrokerXml; 
} 

... 

通过在父拖着这种依赖性SpringBoot项目在其类路径上有一个“queues.properties”文件,QueuesConfig对象被填充正确的值。

我目前正试图通过在Plain Spring项目中使用此依赖项来实现相同的行为。我可以确认PropertySource注释获得“执行”并且queues.properties文件是StandardServletEnvironment(属于PropertySourceList中的条目)的一部分。

问题在于“ConfigurationPropertiesBindingPostProcessor”bean没有被注册(不是singletonObjects的一部分),因此应该填充POJO的代码没有被执行。

有没有解决方法?

非常感谢!

+0

所以你基本上是说*我想使用Spring Boot的这个功能而不使用Spring Boot * ...您如何期待这将起作用?您需要在您的类路径中使用Spring Boot jar,并手动执行Spring Boot为您做的事情。然后,你获得了什么,但复杂性和类路径上的附加jar。 –

回答

0

试着在你的父母春@Configuration类补充一点:

@EnableConfigurationProperties(QueuesConfig.class) 

有关详细信息读取春季启动本节文档。它是文本的几个屏幕,但它值得;-)

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-typesafe-configuration-properties

也许它在测试应用效果很好,因为你使用@SpringBootApplication一些高保真级魔法:)

+0

我想你还需要在SpringBoot项目中使用这个注释 –

+0

感谢您的回复!但是,这是一个弹簧引导注释。我不想将春季启动导入普通的春季应用程序。 –

+0

我目前的解决方法是在父应用程序上下文中手动配置“ConfigurationPropertiesBindingPostProcessor”bean。但是,我认为这不是正确的做法。 –

相关问题