Heim  >  Artikel  >  Java  >  JAVA-Entwicklung von springBoot2.0 zum Aufbau dualer Datenquellen

JAVA-Entwicklung von springBoot2.0 zum Aufbau dualer Datenquellen

无忌哥哥
无忌哥哥Original
2018-07-20 11:32:062642Durchsuche

In letzter Zeit muss aufgrund von Projektanforderungen im Programm gleichzeitig auf verschiedene Datenbanken zugegriffen werden. Früher war es sehr praktisch und schnell, Springboot-Annotationen zum Schreiben von Code zu verwenden, aber wenn Sie einige davon ändern müssen, um Ihre eigene Verwendung zu erleichtern, ist das etwas nervig und ich weiß nicht, wo ich anfangen soll. Schreiben Sie dies auf.

Die erste ist pom.xml, was üblich ist und hier nicht veröffentlicht wird.

Die zweite ist die application.properties-Konfiguration. Aufgrund unterschiedlicher Umgebungen hat der Autor zwei neue application-dev.properties- und application-pro.properties-Konfigurationsdateien erstellt.

application.properties: Geben Sie die Konfiguration an, welche Umgebung aktuell verwendet wird.

spring.profiles.active=dev
application-dev.properties的配置(application-pro.properties类似dev的配置)
#datasource1
spring.datasource.username=**
spring.datasource.password=*****
spring.datasource.jdbc-url=jdbc:mysql://***************
useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#datasource2
spring.datasource.ds1.username=***
spring.datasource.ds1.password=******
spring.datasource.ds1.jdbc-url=jdbc:mysql://***************
useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.ds1.driver-class-name=com.mysql.jdbc.Drive

MyBatis (Config1) aus verschiedenen Datenquellen

@Configuration
@MapperScan(basePackages = "com.pet.petgame2.mapper.dao", sqlSessionFactoryRef = "petgame2SessionFactory")
public class Config1 {

    @Bean(name = "petgame2")
    @ConfigurationProperties(prefix = "spring.datasource")
    @Primary
    public DataSource dataSource(){
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "petgame2SessionFactory")
    @Primary
    public SqlSessionFactory sessionFactory(@Qualifier("petgame2") DataSource dataSource) throws Exception{
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:Mapper/pet2Mapper/*.xml"));
        return factoryBean.getObject();
    }

    @Bean(name = "petgame2TransactionManager")
    @Primary
    public DataSourceTransactionManager transactionManager(@Qualifier("petgame2") DataSource dataSource){
        return new DataSourceTransactionManager(dataSource);
    }
}

MyBatis (Config2) aus verschiedenen Datenquellen

@Configuration
@MapperScan(basePackages = "com.pet.petgame2.mapper.dao2", sqlSessionFactoryRef = "petgamesqlSessionFactory")
public class Config2 {

    @Bean(name = "petgame")
    @ConfigurationProperties(prefix = "spring.datasource.ds1")
    public DataSource dataSource(){
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "petgamesqlSessionFactory")
    public SqlSessionFactory sessionFactory(@Qualifier("petgame") DataSource dataSource) throws Exception{
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:Mapper/petMapper/*.xml"));
        return factoryBean.getObject();
    }

    @Bean(name = "petgameTransactionManager")
    public DataSourceTransactionManager transactionManager(@Qualifier("petgame") DataSource dataSource){
        return new DataSourceTransactionManager(dataSource);
    }
}

Die Annotation @MapperScan scannt automatisch die Mapper-Schnittstellendatei, und FactoryBean.setMapperLocations scannt die Mapper.XML-Datei, die der Mapper-Schnittstellendatei entspricht. Achten Sie darauf, nicht die falschen Pfade zu diesen beiden zu schreiben. @Primary legt die Standardkonfiguration der Datenbankverknüpfung fest und eine der Datenquellen muss als Standard angegeben werden.

*Hinweis: Wenn Sie Hikari, das mit springboot2.0 geliefert wird, als Verbindungspool verwenden, müssen Sie in den Eigenschaften auf

spring.datasource.url改为spring.datasource.jdbc-url

achten oder die DataSource in der Konfiguration wie folgt in DataSourceProperties ändern

@Bean(name = "petgame2DataSourceProperties")
    @Qualifier("petgame2DataSourceProperties")
    @ConfigurationProperties(prefix = "spring.datasource")
    @Primary
    public DataSourceProperties properties(){
        return new DataSourceProperties();
    }

    @Bean(name = "petgame2")
    @ConfigurationProperties(prefix = "spring.datasource")
    @Primary
    public DataSource dataSource(){
//        return DataSourceBuilder.create().build();
        return properties().initializeDataSourceBuilder().build();
    }

Das obige ist der detaillierte Inhalt vonJAVA-Entwicklung von springBoot2.0 zum Aufbau dualer Datenquellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn