SpringBoot

发布时间 2023-11-30 17:24:08作者: nitianxiaozi
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里读取