我正在尝试更好地理解Spring中的配置。我已经阅读了一些示例和教程,但到目前为止,正在发生的事情仍然有点神秘,例如:
blah.properties:
blah.url=127.0.0.1:2181
Blah.java
package com.blah.test;
[...]
@SpringBootApplication
@ComponentScan(basePackages="com.blah.test")
public class BlahApp {
public static void main(String[] args) {
SpringApplication.run(BlahApp.class, args);
}
}
BlahConfig.java
package com.blah.test;
[...]
@Configuration
@PropertySource(value="classpath:blah.properties")
public class BlahConfig {
private static Log log = LogFactory.getLog(BlahConfig.class);
@Bean
public static PropertySourcesPlaceholderConfigurer
configurer(
Environment environment,
@Value("${blah.url}") String url
) {
String s = environment.resolvePlaceholders("${blah.url}");
log.info("blah url: "+s+" / "+url);
return new PropertySourcesPlaceholderConfigurer();
}
}
没有任何东西,这将(部分)做好一切,所以没有任何设置,环境将解析到" 127.0.0.1:2181",我可以从环境变量和/或系统属性。
到目前为止一切顺利。但是我期待@Value
注释能够获得同样的东西。它没有 - 为什么不呢?
另外......我假设@Configuration
类中的静态方法是首先被实例化的东西,如果它们扩展BeanFactoryPostProcessor
,显然更是如此。在确定初始化内容的确切顺序时,似乎存在巨大的混淆潜力。有没有人知道我必须在哪些部分打开日志记录才能更好地了解订购的时间和原因?
谢谢!