我使用的是spring boot版本1.5.2,我有一个用例,需要在一个应用程序中配置两个数据源。我已经成功地让应用程序连接到2个数据库,但我无法为它们设置连接池属性。
下面是配置类:
@Configuration
public class DataSourceConfig {
@Bean(name = "oneDataSource")
@ConfigurationProperties(prefix = "spring.datasource.one")
@Primary
public DataSource oneDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "twoDataSource")
@ConfigurationProperties(prefix = "spring.datasource.two")
public DataSource twoDataSource() {
return DataSourceBuilder.create().build();
}
}
在调试DataSourceBuilder时,我可以看到它正在实例化org类型的bean。阿帕奇。公猫jdbc。水塘DataSource,这是我想要的,但是DataSource对象中的poolProperties字段总是包含一些默认属性,而不是我想要的。
这是我的application.yml:
spring:
profiles: dev
datasource:
one:
url: jdbc:mariadb://localhost:3306/one
username: user1
password: password
driverClassName: org.mariadb.jdbc.Driver
initialize: true
tomcat:
testOnBorrow: true
validation-query: SELECT 1
testWhileIdle: true
continueOnError: true
initialSize: 2
timeBetweenEvictionRunsMillis: 5000
minEvictableIdleTimeMillis: 5000
minIdle: 2
maxIdle: 3
maxActive: 30
two:
url: jdbc:mariadb://localhost:3306/two
username: user1
password: password
driverClassName: org.mariadb.jdbc.Driver
initialize: true
tomcat:
testOnBorrow: true
validation-query: SELECT 1
testWhileIdle: true
continueOnError: true
initialSize: 2
timeBetweenEvictionRunsMillis: 5000
minEvictableIdleTimeMillis: 5000
minIdle: 2
maxIdle: 3
maxActive: 30
我错过什么了吗?DataSourceBuilder是否能够查找以这种方式配置的池属性?用我想要的池属性配置2个数据源的最佳html" target="_blank">方法是什么?
首先,您应该忽略DataSourceAutoConfiguration:
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class
})
public class Main{
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
然后,将您的配置保留在您的问题中。如果您使用mybatis作为DAO Framework,您应该添加这些配置,如下所示:
@Configuration
@MapperScan(basePackages = {"mapperpackage1"}, sqlSessionFactoryRef = "sqlSessionFactory1")
public class MybatisDbAConfig {
@Autowired
@Qualifier("oneDataSource")
private DataSource ds1;
@Bean
public SqlSessionFactory sqlSessionFactory1() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(ds1);
return factoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate1() throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory1());
return template;
}
}
同样地:
@Configuration
@MapperScan(basePackages = {"mapperpackage2"}, sqlSessionFactoryRef = "sqlSessionFactory2")
public class MybatisDbAConfig2 {
@Autowired
@Qualifier("twoDataSource")
private DataSource ds2;
@Bean
public SqlSessionFactory sqlSessionFactory2() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(ds2);
return factoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate2() throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory2());
return template;
}
}
我必须跟踪作为数据源bean在Java web服务器中连接的Oracle会话。 假设,在spring框架中,有一个bean: 并且我必须在池的每个连接上调用PL/SQL。 我该怎么做? 请告诉我在mybatis或JDBC中如何做。 谢谢
我正在开发一个查询多个数据库的监控插件。我想使用HikariCP来保持连接打开,但我不知道如何实例化连接池。 HikariCP是否只使用一个池来存储多个数据库?或者一个数据库只有一个池,我的责任是实例化我将使用的数据库中的尽可能多的池。
我对连接池的理解是;如果connectionstring完全相同,那么我们重用该连接,而不是建立新的连接。 我的问题是,我正在为并行处理创建许多线程。在这个“虚拟”程序中,我创建了500个线程,并让线程池函数处理这些线程。 步骤是: > < li> 每个线程在SQL中创建一个更新表。(说明更新的时间戳) 然后线程Hibernate1到10秒(随机)。 最后,线程在 SQL 中进行另一次更新(说明结
问题内容: 要指定SQLite连接属性,请使用org.sqlite.SQLiteConfig,它的内容如下: 使用c3p0创建连接池的过程如下: 问题:如何创建结合了两者的数据源,让我设置诸如连接池的最大池大小和sqlite的同步模式之类的东西? 问题答案: 尝试 现在,数据源将是c3p0 PooledDataSource,它包装了已根据需要配置的SQLite未池化数据源。 请参阅C3P0的文档,
是否可以配置WebLogic的JDBC连接池,以便在经过一定时间后重置已建立的连接,即使该连接处于活动状态?
我有一个Spring Boot应用程序,可以连接到不同的MySQL数据库。我计划将连接池支持添加到此应用程序。Tomcat JDBC连接池(默认的Spring Boot池)是否为我的每个数据库支持多个池?