spring-boot外部配置全班

时间:2014-08-29 22:07:20

标签: spring properties spring-boot

遵循这些说明here我希望从application.properties文件加载我的MQConnection类属性。

问题是只有在每个属性上放置@Value(" $ {attributename}")注释时才会加载属性。我不想标记每个属性,我宁愿设置类前缀,让spring关联并将我的类属性映射到application.properties中的类属性。

我的设置:

  
      
  • application.properties位于src / main / resources
  • 中的类路径中   
  • 我的@Configuration类也有@EnableConfigurationProperties
  •   
  • 我的MQConnection类同时包含@Component和@ConfigurationProperties(前缀=" mq")
  •   

配置类:

@Configuration
@EnableAutoConfiguration
@EnableConfigurationProperties
@ComponentScan
public class Application implements CommandLineRunner {
 ...
}

MQConnection类:

@Component
@ConfigurationProperties(prefix="mq")
public class MQConnection{

  @Value("${mq.hostname}") // will only work if @Value is here, don't want this
  private String hostname;
  private int port;
  private String qmanager;
  private String queue;
  private String channel;
}

application.properties:

mq.hostname=localhost
mq.port=5120
mq.qmanager=MyQueueManager
mq.queue=MyQueue
mq.channel=MyChannel

2 个答案:

答案 0 :(得分:2)

你的MQConnection类不是Java bean(没有getter和setter),所以Spring无法绑定它。如果您不喜欢getter和setter,请使用Groovy或Project Lombok

答案 1 :(得分:0)

此问题的根本原因可能是由于@Configuration错过了配置文件中的@EnableConfigurationProperties批注。