我正在使用Spring 3,并且还大量使用着名的@Autowire注释。我想创建一个新的注释,让我们称它为@Property,它通过.property文件或vm参数设置自动装配Java属性。
考虑以下课程
class A {
@Property("my.a")
private int a;
}
如果属性my.a
存在,则设置属性A.a。
这样的注释是否已经存在?如果不是,我打算创建一个,如上所述。春天给出的公用事业是否达到我的目标?我想创建一个BeanPostProcessor
...
感谢您的提示!
答案 0 :(得分:3)
已有这样的注释 - @Value
您应该只定义PropertyPlaceHolderConfigurer
,并将其配置为解析系统属性。
答案 1 :(得分:0)
参考http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/
您可以使用@ImportResource
导入XML配置文件。然后使用context:property-placeholder
加载属性
@Configuration
@ImportResource("classpath:/com/acme/properties-config.xml")
public class AppConfig {
private @Value("${jdbc.url}") String url;
private @Value("${jdbc.username}") String username;
private @Value("${jdbc.password}") String password;
public @Bean DataSource dataSource() {
return new DriverManagerDataSource(url, username, password);
}
}
properties-config.xml
<beans>
<context:property-placeholder location="classpath:/com/acme/jdbc.properties"/>
</beans>
jdbc.properties
jdbc.url=jdbc:hsqldb:hsql://localhost/xdb
jdbc.username=sa
jdbc.password=
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
TransferService transferService = ctx.getBean(TransferService.class);
// ...
}