[英]Creating @Autowire like annotation for injecting properties
我正在使用Spring 3,并且还大量使用了众所周知的@Autowire注释。 我想创建一个新的批注,我们将其称为@Property,它可以自动将Java属性设置为.property文件或vm参数。
考虑以下课程
class A {
@Property("my.a")
private int a;
}
如果存在属性my.a
,则设置属性Aa。
这样的注释可能已经存在了吗? 如果没有,我的目标是如上所述创建一个。 Spring会提供实用程序来实现我的目标吗? 我想创建一个BeanPostProcessor
...
感谢您的提示!
已经有这样的注释- @Value
您应该只定义一个PropertyPlaceHolderConfigurer
,并将其配置为解析系统属性。
请参阅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);
// ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.