2011-04-07 69 views
1

我正在使用Spring 3,並且還大量使用衆所周知的@Autowire註釋。我想創建一個新的註釋,我們稱之爲@Property,它通過.property文件或vm參數設置自動裝載Java屬性。爲注入屬性創建類似註釋的@Autowire

考慮下面的類

class A { 

    @Property("my.a") 
    private int a; 
} 

如果屬性my.a存在時,屬性A.A被設置。

這樣的註釋可能已經存在了嗎?如果不是,我打算創建一個,如上所述。春季公用事業是否實現了我的目標?我想創建一個BeanPostProcessor ...

感謝您的提示!

回答

3

有已經這樣一個註解 - @Value

你應該只定義一個PropertyPlaceHolderConfigurer,並配置它來解決系統性能。

+0

謝謝。那就是我正在尋找的東西。 – Erik 2011-04-07 16:27:33

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); 
    // ... 
}