Maven配置文件,Spring,JDBC和JNDI数据源

时间:2011-05-17 15:36:56

标签: spring jdbc maven jndi

我有一个使用Maven的Spring项目,并且有几个配置文件允许它在资源过滤的不同设置上运行。有些设置有JNDI,有些没有。对于那些不需要JDBC数据源的那些。

根据我的设置,处理此问题的最佳方法是什么?我想避免对多个文件和ant-run或类似的东西做任何事情。这让我失望:

  • 设置两个bean并过滤我的资源以包含其中一个。
  • 我没想过的东西?

以下是第一个项目符号的示例:

<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 个答案:

答案 0 :(得分:3)

Spring 3.1本身提供了配置文件支持。在春天的世界,它被称为环境。 Look here了解更多详情。

答案 1 :(得分:1)

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

@Configuration
public class DataConfig {

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

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