<context:property-placeholder ... />
是与PropertyPlaceholderConfigurer
等效的XML。所以,选择那个。在<util:properties/>
简单的工厂一个java.util.Properties
实例可以注入。
在Spring 3.1(不是3.0 …)中,你可以执行以下操作:
@Configuration
@PropertySource("/foo/bar/services.properties")
public class ServiceConfiguration {
@Autowired Environment environment;
@Bean public javax.sql.DataSource dataSource( ){
String user = this.environment.getProperty("ds.user");
...
}
}
在Spring 3.0中,你可以使用SpEl批注“访问”使用PropertyPlaceHolderConfigurer机制定义的属性:
@Value("${ds.user}") private String user;
如果要一起删除XML,只需使用Java配置手动注册PropertyPlaceholderConfigurer。我更喜欢3.1方法。但是,如果你使用Spring 3.0方法(因为3.1尚不支持GA …),你现在可以像上面这样定义XML:
@Configuration
public class MySpring3Configuration {
@Bean
public static PropertyPlaceholderConfigurer configurer() {
PropertyPlaceholderConfigurer ppc = ...
ppc.setLocations(...);
return ppc;
}
@Bean
public class DataSource dataSource(
@Value("${ds.user}") String user,
@Value("${ds.pw}") String pw,
...) {
DataSource ds = ...
ds.setUser(user);
ds.setPassword(pw);
...
return ds;
}
}
注意,PPC是使用static
bean定义方法定义的。这是确保豆类尽早注册所必需的,因为PPC是beanfactoryPostProcessor-
它可以在上下文中影响豆类本身的注册,因此必须先进行其他所有事情的注册。