Maven配置文件、Spring框架、JDBC和JNDI数据源

4
我有一个使用Maven的Spring项目,有几个配置文件,允许在不同的设置中运行资源过滤。其中一些设置具有JNDI,而另一些则没有。对于那些没有JNDI的设置,需要使用JDBC数据源。
考虑到我的设置,什么是最好的处理方式?我想避免使用多个文件和ant-run等方法。这使我只能选择:
1. 设置两个bean并过滤我的资源以包含其中一个。 2. 我还没有想到的其他方法?
以下是第一种方法的示例:
<bean id="jdbcDataSource"
    class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close"
    p:driverClassName="${jdbc.driver}"
    p:url="${jdbc.url}"
    p:username="${jdbc.username}"
    p:password="${jdbc.password}"/>

<bean id="jndiDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"
    p:jndiName="${jndi.name}" />

<bean id="someBean" class="com.whatever.SomeBeanImpl"
    p:dataSource-ref="${dataSource}"/>

我很想听听其他人是怎么完成这个任务的,以及他们选择这种方案的原因。或者他们为什么选择这种解决方案。

2个回答

3

Spring 3.1提供本地化的配置支持,它在Spring世界中被称为环境(Environment)。点击这里了解更多细节。


我赞同这个观点,这里有另一个使用Spring配置文件的例子:http://diarmuidmoloney.wordpress.com/2012/04/07/spring-environments/ - techarch

1

使用基于Java的配置来配置您的数据源bean。

@Configuration
public class DataConfig {

  @Value("${dataSource.jndiName:}")
  String jndiName; 

  @Bean
  public DataSource dataSource() {
    if ("".equals(jndiName)) {
       // create datasource
    } else {
       // lookup from JNDI
    }
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接