Maison  >  Article  >  Java  >  Développement JAVA de springBoot2.0 pour créer des sources de données doubles

Développement JAVA de springBoot2.0 pour créer des sources de données doubles

无忌哥哥
无忌哥哥original
2018-07-20 11:32:062622parcourir

Récemment, en raison des besoins du projet, différentes bases de données doivent être accessibles simultanément dans le programme. C'était vraiment pratique et rapide d'utiliser les annotations springboot pour écrire du code auparavant, mais si vous devez en modifier certaines pour faciliter votre propre utilisation, c'est un peu ennuyeux et je ne sais pas par où commencer. Écrivez ceci.

Le premier est pom.xml, qui est courant et ne sera pas publié ici.

La seconde est la configuration application.properties En raison d'environnements différents, l'auteur a créé deux nouveaux fichiers de configuration application-dev.properties et application-pro.properties.

application.properties : Précisez la configuration de l'environnement actuellement utilisé

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) des différentes sources de données

@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) à partir de différentes sources de données

@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);
    }
}
L'annotation @MapperScan analysera automatiquement le fichier d'interface du mappeur. factoryBean.setMapperLocations analysera le fichier Mapper.XML correspondant au fichier d'interface du mappeur. de ces deux ne sont pas les mêmes. @Primary définit la configuration par défaut des liens de base de données et l'une des sources de données doit être spécifiée par défaut.

*Remarque : Si vous utilisez Hikari fourni avec springboot2.0 comme pool de connexions, vous devez faire attention à

spring.datasource.url改为spring.datasource.jdbc-url
dans les propriétés ou modifier le DataSource dans la configuration en DataSourceProperties, comme suit

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn