yml配置文件如下:
server: port: 8080 spring: datasource: service1: jdbc-url: jdbc:mysql://localhost:3306/dataBase1?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai username: username password: 'password' driver-class-name: com.mysql.cj.jdbc.Driver service2: jdbc-url: jdbc:mysql://localhost:3306/dataBase2?characterEncoding=utf-8&useSSL=false&servertimezone=cst&nullCatalogMeansCurrent=true username: username password: 'password' driver-class-name: com.mysql.cj.jdbc.Driver
config配置类的代码如下(以其中一个数据库为例):
@Configuration @MapperScan(basePackages = {"com.pandul.secret.technology.common.mapper"}, sqlSessionFactoryRef = "service1DataSourceFactory") public class Service1DataSourceConfig { /** * 源,prefix要和yml文件里的一致 */ @Bean(name = "service1DataSource") @ConfigurationProperties(prefix = "spring.datasource.service1") public DataSource dataSource() { return DataSourceBuilder.create().build(); } /** * 工厂 */ @Bean("service1DataSourceFactory") @DependsOn("service1DataSource") public SqlSessionFactory dataSourceFactory() throws Exception { SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(dataSource()); return factoryBean.getObject(); } /** * 模板 */ @Bean("service1SqlSessionTemplate") @DependsOn("service1DataSourceFactory") public SqlSessionTemplate sqlSessionTemplate( @Qualifier("Service1DataSourceFactory") SqlSessionFactory sessionfactory) { return new SqlSessionTemplate(sessionfactory); } // 创建事务管理器 @Bean(name = "service1TransactionManager") public PlatformTransactionManager txManager(@Qualifier("service1DataSource") DataSource service1DataSource) { return new DataSourceTransactionManager(service1DataSource); } }
扩展
可以从nacos中的yml读取配置信息
yml如下:
spring:
profiles:
active: '@profiles.active@'
application:
name: serviceName
cloud:
nacos:
discovery:
server-addr: sys-nacos:8848
config:
server-addr: sys-nacos:8848
file-extension: yml
group: GROUPNAME
prefix: serviceName
ext-config[0]:
data-id: common-datasource.yml
group: FAWKES_SYS_GROUP
refresh: true
nacos上数据库配置就从common-datasource.yml里读取