繁体   English   中英

创建类似@Autowire的注解以注入属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM