SpringBoot Ebean多数据源

本文介绍了如何在SpringBoot应用中使用Ebean进行多数据源配置。重点在于properties文件中的设置,通常默认无需指定数据库服务器,但在特定场景下需要明确指定server。

Ebean多数据源配置

在properties文件中:

代码:

@Configuration
@Slf4j
public class EbeanConfig {
@Value("${spring.datasource.url}")
    String url;

    @Value("${spring.datasource.username}")
    String username;

    @Value("${spring.datasource.password}")
    String password;

    @Value("${spring.datasource.bi.url}")
    String biUrl;

    @Value("${spring.datasource.bi.username}")
    String biUsername;

    @Value("${spring.datasource.bi.password}")
    String biPassword;

    @Value("${spring.datasource.bi.driver-class-name}")
    String biDriver;

    @Value("${spring.tddl.app}")
    String appName;

    @Value("${spring.tddl.sharding}")
    Boolean sharding;

    @Value("${spring.datasource.ri.url}")
    String riUrl;

    @Value("${spring.datasource.ri.username}")
    String riUsername;

    @Value("${spring.datasource.ri.password}")
    String riPassword;

    @Resource
    private KeyCenterUtil KeyCenterUtil;

    @Bean
    public EbeanServer setupEbeanServer() {
        ServerConfig config = PgServerConfig.config(url, username, password);
        config.setName("rds-pg-env");
        config.setPersistBatchSize(100);
        config.setLazyLoadBatchSize(100);
        log.info("数据库秘钥名={}", biPassword);
        String password = KeyCenterUtil.decrypt(biPassword);
        String riPwd = DesUtil.decrypt(riPassword);

        log.info("数据库密码={}", password);

        ServerConfig biConfig = MysqlServerConfig.config(biUrl, biUsername, password, biDriver);
        biConfig.setName("bi-mysql");
        biConfig.setPersistBatchSize(100);
        biConfig.setLazyLoadBatchSize(100);
        EbeanServerFactory.create(biConfig);

        ServerConfig tddlConfig = TddlServerConfig.config(appName, sharding, biDriver);
        tddlConfig.setName("tddl-mysql");
        tddlConfig.setPersistBatchSize(100);
        tddlConfig.setLazyLoadBatchSize(100);
        EbeanServerFactory.create(tddlConfig);

//        ServerConfig riConfig = MysqlServerConfig.config(riUrl, riUsername, riPwd, biDriver);
//        riConfig.setName("ri-mysql");
//        riConfig.setPersistBatchSize(100);
//        riConfig.setLazyLoadBatchSize(100);
//        EbeanServerFactory.create(riConfig);

        return EbeanServerFactory.create(config);
    }
}
@UtilityClass
public class PgServerConfig {

    public static ServerConfig config(String url, String username, String password) {
        ServerConfig config = new ServerConfig();
        config.setDefaultServer(true);//使用默认数据库
        //config.setDataTimeZone(""); //TODO 时区问题如何考虑

        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setUrl(url);
        dataSourceConfig.setUsername(username);
        dataSourceConfig.setPassword(password);
        dataSourceConfig.setDriver("org.postgresql.Driver");
        dataSourceConfig.setMaxConnections(3000);
        config.setDataSourceConfig(dataSourceConfig);
        return config;
    }
}



@UtilityClass
public class MysqlServerConfig {

    public static ServerConfig config(String url, String username, String password,String driver) {
        ServerConfig config = new ServerConfig();
        config.setDefaultServer(false);
        //config.setDataTimeZone(""); //TODO 时区问题如何考虑

        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setUrl(url);
        dataSourceConfig.setUsername(username);
        dataSourceConfig.setPassword(password);
        dataSourceConfig.setDriver(driver);
        config.setDataSourceConfig(dataSourceConfig);
        return config;
    }
}

默认情况下不用指定server,当需要特定数据库时需要指定server:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值