Spring引导自动配置无法将属性文件从jar绑定到bean

时间:2016-01-13 12:49:33

标签: java spring configuration spring-boot rabbitmq

我想做的是让jar文件配置好消息队列。 我的项目结构如下:我在模拟模拟器中有春季启动应用程序,它使用 mq-api 模块(就Maven而言)

模拟器

var planetSystem={
"_id": "123123123",
"key1": "value1",
"key2": "value2",
"arr": [{
    "amount": "678",
    "addedBy": "idontknow",
    "commission": "100"
}, {
    "amount": "800",
    "addedBy": "iwishiknew",
    "commission": "108"
}]}

MQ-API

package emulator;

@ComponentScan(basePackageClasses = {MqConfig.class})
@SpringBootApplication
public class Application {
    static final Logger log = LoggerFactory.getLogger(Application.class);


    public static void main(String[] args) throws InterruptedException {
        SpringApplication.run(Application.class, args);
    }


}
mq-api.jar

中的

mq.properties

package mq;

@Configuration
@EnableRabbit
@ImportResource(value = "classpath:/mq.properties", reader = PropertiesBeanDefinitionReader.class)
public class MqConfig {
    @Bean
    public TopicExchange topicExchange() {
        return new TopicExchange("exc");
    }
}

运行模拟器应用程序我有例外:

spring.rabbitmq.host=localhost

如果我删除 @ImportResource 应用程序启动时没有错误,当然会跳过配置文件 mq.properties

我使用spring boot 1.3.0(boot-starter,* -starter-amqp)

1 个答案:

答案 0 :(得分:2)

作为@M。 Deinum指出,@ImportResource用于从XML文件导入bean定义。它不会用于加载属性文件。要加载属性文件,您可以使用@PropertySource。看看这个post就如何做到这一点的一个很好的例子。