2017-10-19 54 views
0

我有2 @Component类:AppConfig加载从使用env我通过由@BeanAppConfig加载属性中设置领事服务器和JpaConfig属性。因此,有2种豆:春@Order(Ordered.HIGHEST_PRECEDENCE)并不能保证春润第一

@Bean 
@Order(Ordered.HIGHEST_PRECEDENCE) 
Void consulProperties() { 
    //setting environment... 
} 

其次在JpaConfig

@Bean 
// @DependsOn("consulProperties") 
public LocalContainerEntityManagerFactoryBean entityManagerFactory() { 

    LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean(); 
    //some more logic 

    return factoryBean; 
} 

这不无@DependsOn("consulProperties")工作。它在consulProperties之前开始启动,当时环境还没有设置。所有其他豆似乎都在等待consulProperties好......为什么?我该怎么做错了?它是LocalContainerEntityManagerFactoryBean - 特定的功能?如何确定一个bean首先运行而不指定@DependsOn

+1

它不是一个bean,它应该使用ApplicationContextInitializer注册为一个额外的'PropertySource'。 –

+0

它不能这样做,因为它需要具有指定url,令牌和映射consul属性到环境属性的逻辑。 – Daria

+0

是的,它可以。我说你需要'PropertySource'我没有说你需要'@ PropertySource'。基本上你在'@ Bean'方法里面做的事情应该在你自定义的'PropertySource'(或'ApplicationContextInitializer')中并且通过'Environment'注册。 –

回答

1

尝试物化consulProperties()豆(不是Void型)和在entityManagerFactory()方法参数注入它。