2011-05-17 77 views
4

我有一個使用Maven的Spring項目,並且有多個配置文件允許它通過資源過濾在不同的設置上運行。一些設置有JNDI,有些則沒有。對於那些不需要JDBC數據源的人。Maven配置文件,Spring,JDBC和JNDI數據源

根據我的設置,處理這個問題的最佳方法是什麼?我想避免做任何與多個文件和螞蟻運行或類似的東西。留給我的:

  • 設置兩個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}"/> 

我很感興趣地聽到人們已經做到了這一點其他的方式,爲什麼他們去與解決方案。或者如果他們採用這種解決方案以及爲什麼。

回答

3

Spring 3.1本地提供配置文件支持。在春天它被稱爲環境。 Look here瞭解更多詳情。

+0

我第二個,這裏是另一個使用彈簧輪廓的例子http://diarmuidmoloney.wordpress.com/2012/04/07/spring-environments/ – techarch 2012-04-07 14:52:21

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 
    } 
    }