我们可以使用<context:property-placeholder>
外部化属性,我们可以通过配置<context:property-override>
来覆盖Spring bean属性,如下所示:
<context:property-placeholder location="classpath:application.properties"/>
<context:property-override location="classpath:override.properties"/>
我想将我的XML配置移动到JavaConfig。
@Configuration
@ComponentScan
@PropertySource("classpath:application.properties")
public class AppConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
但是如何使用Annotation配置覆盖属性?
PS: 我有一个bean说MyBean如下:
@Component
public class MyBean {
@Value("${someProp}")
private String someProp;
}
在application.properties
我有
someProp=TestValue
在我的override.properties
中,我将someProp值覆盖为
myBean.someProp=RealValue
答案 0 :(得分:2)
不,不是。
但您可以在配置类中创建类型为PropertyOverrideConfigurer
的bean,但结果相同。
<强>更新强>
例如:
@Bean public static PropertyOverrideConfigurer propertyOverrideConfigurer() {
PropertyOverrideConfigurer overrideConfigurer = new PropertyOverrideConfigurer();
overrideConfigurer.setLocation(new ClassPathResource("override.properties"));
return overrideConfigurer;
}
请注意静态修饰符,这是因为BFPP应该在容器生命周期的早期实例化。