人们为使用Spring控制部署配置而开发了哪些策略?我已经将环境细节(例如jdbc连接参数)提取到属性文件中,但我正在寻找一些管理不是简单字符串的部署细节的方法。具体来说,我正在进行开发时使用本地配置的数据源,在我们的应用服务器(DEV,QA)上使用JNDI。
我的 applicationContext.xml 包含以下两行
<import resource="spring/datasource-local-oracle.xml"/>
<import resource="spring/datasource-jndi.xml"/>
我注释掉那个实例中没有使用的数据源。尽管如此,还是有更好的方法。思想,想法,建议?
答案 0 :(得分:2)
使用@Bean在代码中定义数据源,而不是在XML中定义。这样,您可以将条件逻辑应用于bean的创建方式。例如:
@Value("${url:jdbc:hsqldb:mem:memdb}")
String url;
// username, password, etc
@Value("${jndiName:}")
String jndiName;
@Bean
public DataSource dataSource() {
DataSource ds;
if (jndiName == "") {
BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName(driverClassName);
bds.setUrl(url);
bds.setUsername(username);
bds.setPassword(password);
ds = bds;
} else {
JndiObjectFactoryBean = jndiFactory = new JndiObjectFactoryBean();
jndiFactory.setJndiName("java:/" + jndiName);
jndiFactory.afterPropertiesSet();
ds = (DataSource) jndiFactory.getObject();
}
return ds;
}