Spring MVC改变了DataSource

时间:2016-11-09 20:28:08

标签: spring-mvc

我正在开发一个Spring MVC 4应用程序,这里是我的一个JPAConfig,我必须配置两个不同的数据源这里是类和数据源的定义:

@Configuration
@EnableJpaRepositories(basePackageClasses = MassaContratos.class, enableDefaultTransactions = false,
                        entityManagerFactoryRef = "entityManagerFactory08",transactionManagerRef = "transactionManager08")
@EnableTransactionManagement
public class JPAConfig08 {

    @Bean
    public DataSource dataSource08() {
        JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
        dataSourceLookup.setResourceRef(true);
        return dataSourceLookup.getDataSource("jdbc/DB08");
    }

    @Bean
    public JpaVendorAdapter jpaVendorAdapter08() {
        HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
        adapter.setDatabase(Database.ORACLE);
        adapter.setShowSql(false);
        adapter.setGenerateDdl(false);
        adapter.setDatabasePlatform("org.hibernate.dialect.OracleDialect");
        return adapter;
    }

    @Bean
    public EntityManagerFactory entityManagerFactory08() {
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setDataSource(dataSource08());
        factory.setJpaVendorAdapter(jpaVendorAdapter08());
        factory.setPackagesToScan(MassaContrato.class.getPackage().getName());
        factory.afterPropertiesSet();
        return factory.getObject();
    }

    @Bean
    public PlatformTransactionManager transactionManager08() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
        transactionManager.setEntityManagerFactory(entityManagerFactory08());
        return transactionManager;
    }

}

我需要做的事情,我不知道该怎么办......如何改变这个

dataSourceLookup.getDataSource("jdbc/DB08");

从其他数据库配置中挑选

例如:

dataSourceLookup.getDataSource("jdbc/DB08-dev");

我需要动态更改数据源。

2 个答案:

答案 0 :(得分:0)

我不确定你是否能够做到这一点,因为这不是JNDI想要实现的目标。

JNDI将配置推迟到容器。这样,无论运行什么环境,您的JNDI名称都是相同的。容器配置。确定JNDI名称指向哪个数据库。

答案 1 :(得分:0)

如果您有多个预配置数据源,AbstractRoutingDataSource可能会对您有所帮助。

以下是一个很好的例子:http://fedulov.website/2015/10/14/dynamic-datasource-routing-with-spring/