【问题标题】:Maven Profiles, Spring, JDBC and JNDI DatasourcesMaven 配置文件、Spring、JDBC 和 JNDI 数据源
【发布时间】:2011-05-17 15:36:55
【问题描述】:

我有一个使用 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}"/>

我很想知道人们实现此目的的其他方式以及他们采用该解决方案的原因。或者他们是否采用了这个解决方案以及为什么。

【问题讨论】:

    标签: spring jdbc maven jndi


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

    @Configuration
    public class DataConfig {
    
      @Value("${dataSource.jndiName:}")
      String jndiName; 
    
      @Bean
      public DataSource dataSource() {
        if ("".equals(jndiName)) {
           // create datasource
        } else {
           // lookup from JNDI
        }
      }
    

    【讨论】:

      猜你喜欢
      • 2015-03-02
      • 1970-01-01
      • 2018-03-22
      • 2013-05-04
      • 1970-01-01
      • 2018-10-13
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多