【发布时间】:2021-07-03 00:21:20
【问题描述】:
我目前正在开发一个项目,该项目主要使用 Redis 进行缓存,我使用 Oracle 作为主数据库,使用 Spring Data JPA 来处理我项目中的数据库层。我需要知道如何使用 @Transactional 注释支持来处理 Redis 中的事务。我已经参考了很多关于这个场景的教程和文档。在大多数这些教程中,总是有相同的源代码集可用。但是,我仍然对实施没有明确的想法。因为在我的应用程序中已经有一个可用的数据源,我通过属性文件配置了它。 (Oracle 数据库) 所以我怀疑dataSource bean 的执行。而且我也无法理解 transactionManager bean 的用法。我应该如何正确实施,请给出详细说明。
我在网上找到的源代码。
@Configuration
@EnableTransactionManagement // 1
public class RedisConfig {
@Bean
public StringRedisTemplate stringRedisTemplate(LettuceConnectionFactory redisConnectionFactory) {
// Configure redisTemplate
StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
stringRedisTemplate.setConnectionFactory(redisConnectionFactory);
/ / Open transaction support
stringRedisTemplate.setEnableTransactionSupport(true); // 2
return stringRedisTemplate;
}
@Bean
public PlatformTransactionManager transactionManager() throws SQLException {
return new DataSourceTransactionManager(dataSource()); // 3
}
@Bean
public DataSource dataSource() throws SQLException {
// ...
}
}
更新: apppication.properties 文件中当前配置的数据源属性。
# OracleDB connection settings
spring.datasource.url=jdbc:oracle:thin:@192.168.20.108:1521:orcl
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
# HikariCP settings
spring.datasource.hikari.minimumIdle=5
spring.datasource.hikari.maximumPoolSize=20
spring.datasource.hikari.idleTimeout=30000
spring.datasource.hikari.maxLifetime=2000000
spring.datasource.hikari.connectionTimeout=30000
spring.datasource.hikari.poolName=redis-sample-pool
【问题讨论】:
-
这就是您需要做的所有事情。您是否发现此代码有任何问题?
-
@sonus21 问题是我对dataSource bean的实现没有任何明确的想法。正如我提到的,这是我从互联网上获得的代码。这不是我的代码。在这里你可以看到 dataSource bean 实现是空的。我应该在该方法中实现什么。
标签: java spring-boot redis spring-data-redis jedis