Spring <context:property-override> 的注解对应物是什么?
What is Annotation counterpart for Spring <context:property-override>?
我们可以使用 <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();
}
}
但是如何使用注释配置我的覆盖属性?
PS:
我有一个 bean 说 MyBean 如下:
@Component
public class MyBean {
@Value("${someProp}")
private String someProp;
}
在我的 application.properties
我有
someProp=TestValue
在我的 override.properties
中,我将 someProp 值重写为
myBean.someProp=RealValue
不,不是。
但是您可以在配置 class 中创建类型为 PropertyOverrideConfigurer
的 bean,结果相同。
更新
例如:
@Bean public static PropertyOverrideConfigurer propertyOverrideConfigurer() {
PropertyOverrideConfigurer overrideConfigurer = new PropertyOverrideConfigurer();
overrideConfigurer.setLocation(new ClassPathResource("override.properties"));
return overrideConfigurer;
}
注意 static 修饰符,这是因为 BFPP 应该在容器生命周期的早期实例化。
有关详细信息,请参阅 http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Bean.html。
我们可以使用 <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();
}
}
但是如何使用注释配置我的覆盖属性?
PS: 我有一个 bean 说 MyBean 如下:
@Component
public class MyBean {
@Value("${someProp}")
private String someProp;
}
在我的 application.properties
我有
someProp=TestValue
在我的 override.properties
中,我将 someProp 值重写为
myBean.someProp=RealValue
不,不是。
但是您可以在配置 class 中创建类型为 PropertyOverrideConfigurer
的 bean,结果相同。
更新
例如:
@Bean public static PropertyOverrideConfigurer propertyOverrideConfigurer() {
PropertyOverrideConfigurer overrideConfigurer = new PropertyOverrideConfigurer();
overrideConfigurer.setLocation(new ClassPathResource("override.properties"));
return overrideConfigurer;
}
注意 static 修饰符,这是因为 BFPP 应该在容器生命周期的早期实例化。
有关详细信息,请参阅 http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Bean.html。