多数源TomcalJDBC Pool Config with Spring boot

本文介绍了如何在Spring Boot中配置Tomcat JDBC连接池以实现多数据源。内容包括`DataSourcesConfig`、`Db1PoolProperties`、`Db2PoolProperties`以及对应的数据库配置`DB1Config`和`DB2Config`,每个数据源都有各自的包结构,如`com.base.package.db1`和`com.base.package.db2`,并提供了相关参考链接。
摘要由CSDN通过智能技术生成

prop

spring.datasource.db1.url=#Url
spring.datasource.db1.userName=#name
spring.datasource.db1.password=#password
spring.datasource.db1.driverClassName=#jdbcDriver
spring.datasource.db1.logAbandoned=true
spring.datasource.db1.removeAbandoned=true
#连接可以被删除的超时值(超过连接会被Abandoned)
spring.datasource.db1.removeAbandonedTimeout=600
spring.datasource.db1.suspectTimeout=600
#保持连接的最大毫秒数(超过强制重连)
spring.datasource.db1.maxAge=3000000
spring.datasource.db1.maxWait=3000000
spring.datasource.db1.maxActive=200
spring.datasource.db1.maxIdle=200
spring.datasource.db1.minIdle=5
spring.datasource.db1.initialSize=5
#used/MaxActive*100>=abandonWhenPercentageFull
spring.datasource.db1.abandonWhenPercentageFull=90
spring.datasource.db1.testWhileIdle=true
spring.datasource.db1.validationQuery=select 1
spring.datasource.db1.testOnBorrow=true
spring.datasource.db1.minEvictableIdleTimeMillis=400000
spring.datasource.db1.timeBetweenEvictionRunsMillis=200000
spring.datasource.db1.jdbcInterceptors=org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer;org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer

多数据源

DataSourcesConfig

@Configuration
@EnableAutoConfiguration(exclude=DataSourceAutoConfiguration.class)
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourcesConfig {

    @Resource 
    Db1PoolProperties properties1;
	@Resource 
    Db2PoolProperties properties2;
	@Primary
	@Bean(name = "db1DataSource")
	@Qualifier("db1DataSource")
	public DataSource csDataSource() {
		DataSource d=new org.apache.tomcat.jdbc.pool.DataSource(properties1);
		return d;
	}
	@Primary
	@Bean(name = "db2DataSource")
	@Qualifier("db2DataSource")
	public DataSource csDataSource() {
		DataSource d=new org.apache.tomcat.jdbc.pool.DataSource(properties2);
		return d;
	}
}

Db1PoolProperties

@Component
@ConfigurationProperties(prefix = "spring.datasource.db1")
public class Db1PoolProperties extends PoolProperties{
	private static final long serialVersionUID = 1L;
}

Db2PoolProperties

@Component
@ConfigurationProperties(prefix = "spring.datasource.db2")
public class Db2PoolProperties extends PoolProperties{
	private static final long serialVersionUID = 1L;
}

DB1Config

com.base.package.db1
– config
– entity
– dao
– service
---- impl

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "db1EntityManagerFactory",
	transactionManagerRef = "db1TransactionManager", 
	basePackages = {"com.base.package.db1" })
public class CsDBConfig {
	private final static String ENTITY_PACKAGE = "com.base.package.db1.entity";
	@Autowired
	@Qualifier("db1DataSource")
	private DataSource db1DataSource;

	@Bean(name = "db1EntityManager")
	@Primary
	public EntityManager toolkitEntityManager(EntityManagerFactoryBuilder builder) {
		return toolkitEntityManagerFactory(builder).getObject().createEntityManager();
	}

	@Bean(name = "db1EntityManagerFactory")
	@Primary
	public LocalContainerEntityManagerFactoryBean toolkitEntityManagerFactory(EntityManagerFactoryBuilder builder) {
		HashMap<String, String> properties = new HashMap<>();
		properties.put("hibernate.dialect", "org.hibernate.dialect.SQLServer2012Dialect"); 
		LocalContainerEntityManagerFactoryBean factoryBean= builder.dataSource(db1DataSource).properties(getVendorProperties(db1DataSource))
				.packages(ENTITY_PACKAGE).persistenceUnit("db1persistenceUnit").build();
		factoryBean.setJpaPropertyMap(properties);
		return factoryBean;
	}

	@Autowired
	private JpaProperties jpaProperties;

	private Map<String, String> getVendorProperties(DataSource dataSource) {
		return jpaProperties.getHibernateProperties(dataSource);
	}

	@Bean(name = "db1TransactionManager")
	@Primary
	public PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) {
		return new JpaTransactionManager(toolkitEntityManagerFactory(builder).getObject());
	}
}

DB2Config

com.base.package.db2
– config
– entity
– dao
– service
---- impl

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "db2EntityManagerFactory",
	transactionManagerRef = "db2TransactionManager", 
	basePackages = {"com.base.package.db2" })
public class CsDBConfig {
	private final static String ENTITY_PACKAGE = "com.base.package.db2.entity";
	@Autowired
	@Qualifier("db2DataSource")
	private DataSource db2DataSource;

	@Bean(name = "db2EntityManager")
	public EntityManager toolkitEntityManager(EntityManagerFactoryBuilder builder) {
		return toolkitEntityManagerFactory(builder).getObject().createEntityManager();
	}

	@Bean(name = "db2EntityManagerFactory")
	public LocalContainerEntityManagerFactoryBean toolkitEntityManagerFactory(EntityManagerFactoryBuilder builder) {
		HashMap<String, String> properties = new HashMap<>();
		properties.put("hibernate.dialect", "org.hibernate.dialect.SQLServer2012Dialect"); 
		LocalContainerEntityManagerFactoryBean factoryBean= builder.dataSource(db2DataSource).properties(getVendorProperties(db2DataSource))
				.packages(ENTITY_PACKAGE).persistenceUnit("db2persistenceUnit").build();
		factoryBean.setJpaPropertyMap(properties);
		return factoryBean;
	}

	@Autowired
	private JpaProperties jpaProperties;

	private Map<String, String> getVendorProperties(DataSource dataSource) {
		return jpaProperties.getHibernateProperties(dataSource);
	}
	
	@Bean(name = "db2TransactionManager")
	public PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) {
		return new JpaTransactionManager(toolkitEntityManagerFactory(builder).getObject());
	}
}

参考

Tomcat-Jdbc-Pool连接池参数说明
https://blog.csdn.net/a4171175/article/details/78366552

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!要在Spring Boot中集成Jedis,你可以按照以下步骤进行操作: 1. 首先,在你的Spring Boot项目中添加Jedis的依赖。你可以在你的项目的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>版本号</version> </dependency> ``` 请确保将"版本号"替换为你希望使用的Jedis版本。 2. 接下来,你需要配置Jedis连接到Redis服务器。在你的Spring Boot项目的配置文件(如application.properties或application.yml)中添加以下配置: ```properties spring.redis.host=127.0.0.1 spring.redis.port=6379 ``` 请根据你的实际情况修改主机和端口号。 3. 创建一个Jedis配置类,用于创建Jedis连接池和Jedis实例。你可以在你的项目中创建一个类,如RedisConfig,将以下代码添加到该类中: ```java import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; @Configuration public class RedisConfig { @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port; @Bean public JedisPool jedisPool() { JedisPoolConfig poolConfig = new JedisPoolConfig(); // 可根据需要进行配置其他参数 return new JedisPool(poolConfig, host, port); } } ``` 这将创建一个JedisPool实例,并将其作为Spring Bean进行管理。 4. 现在,你可以在你的代码中注入JedisPool,并使用它来获取Jedis实例,从而与Redis服务器进行交互。例如: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; @Service public class RedisService { private final JedisPool jedisPool; @Autowired public RedisService(JedisPool jedisPool) { this.jedisPool = jedisPool; } public void set(String key, String value) { try (Jedis jedis = jedisPool.getResource()) { jedis.set(key, value); } } public String get(String key) { try (Jedis jedis = jedisPool.getResource()) { return jedis.get(key); } } } ``` 在上面的示例中,我们通过构造函数注入了JedisPool,并使用它来获取Jedis实例进行操作。 这样,你就成功地将Jedis集成到了Spring Boot项目中。你可以根据需要使用其他Jedis的功能来操作Redis服务器。希望能对你有所帮助!如果有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值