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!