SpringBoot 配置Oracle數據源 @Primary


    項目中已經有一個數據庫Cassandra在使用,因為要操作另外一張表的數據,來達到需求的實現,要配置另外一個數據庫Orcale,數據springboot的多數據源配的了,

    期初不知道,就按照普通的數據庫的配置來做,發現不行,領導過來一看,也說你得看看springboot的數據庫配置了,不太一樣,找了找其他項目上的Oracle配置,試着做了一下

    

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.persistence.EntityManager;
import javax.sql.DataSource; 

@EnableTransactionManagement
@EnableJpaRepositories(
		entityManagerFactoryRef="entityManagerFactoryPrimary",
		transactionManagerRef="transactionManagerPrimary",
		basePackages= {"com.nokia.coap.adapter.dbmsm.repo"})
@Configuration
public class OracleDBConf{
	
	@Bean(name = "primaryDataSource")
	@Primary
    @Qualifier("primaryDataSource")
    @ConfigurationProperties(prefix="oracleDS")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }
	
	@DependsOn({"primaryDataSource"})
    @Value("#{primaryDataSource}")
	@Bean(name = "primaryJdbcTemplate")
    public JdbcTemplate primaryJdbcTemplate(
            @Qualifier("primaryDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    @Primary
    @Bean(name = "entityManagerPrimary")
    public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
        return entityManagerFactoryPrimary(builder).getObject().createEntityManager();
    }
    
    @Primary
    @Bean(name = "entityManagerFactoryPrimary")
    public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary (EntityManagerFactoryBuilder builder) {
        return builder
                .dataSource(primaryDataSource())
                //.properties(getVendorProperties(primaryDataSource))
                .packages("com.nokia.coap.adapter.dbmsm.model") //設置實體類所在位置
                .persistenceUnit("primaryPersistenceUnit")
                .build();
    }

    @Primary
    @Bean(name = "transactionManagerPrimary")
    public PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) {
        return new JpaTransactionManager(entityManagerFactoryPrimary(builder).getObject());
    }
}

配置文件(.yml):

oracleDS:
     platform: oracle
     url: jdbc:oracle:thin:test/test@127.0.0.1:1521/oracle
     username: test
     password: test
     driverClassName: oracle.jdbc.driver.OracleDriver
     max-active: 10
     max-idle: 5
     min-idle: 2
     initial-size: 6
     validation-query: select 1 from dual
     test-while-idle: true

pom.xml:

		<dependency>
			<groupId>com.oracle.jdbc</groupId>
			<artifactId>ojdbc7</artifactId>
			<version>12.1.0.2</version>
		</dependency>
		<dependency>
    		<groupId>org.hibernate.javax.persistence</groupId>
    		<artifactId>hibernate-jpa-2.1-api</artifactId>
    		<version>1.0.0.Final</version>
		</dependency>
		<dependency>
    		<groupId>org.springframework.data</groupId>
    		<artifactId>spring-data-jpa</artifactId>
    		<version>1.11.12.RELEASE</version>
		</dependency>
		<dependency>
   			<groupId>org.springframework.boot</groupId>
   			<artifactId>spring-boot-starter-data-jpa</artifactId>
   			<version>${springboot.version}</version>
		</dependency>



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM