Spring使用定时器时无法获取事务问题
来源:互联网 发布:json2.js下载 编辑:程序博客网 时间:2024/06/05 22:51
本人Spring菜鸟,当我使用Springcloud+redis队列时,我在其中一个模块启动定时器定时从Redis中取数据更新至数据库,出现了TransactionRequiredException,解决方ran案是在做更新操作的service层的方法上加上@Transactionl 并添加配置类如下即可完美解决事务问题:
import org.apache.tomcat.jdbc.pool.DataSource;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.orm.jpa.JpaTransactionManager;import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;import org.springframework.transaction.PlatformTransactionManager;import org.springframework.transaction.annotation.TransactionManagementConfigurer;import javax.persistence.EntityManagerFactory;/** * Created by JENSEN on 2017/11/15. */@Configurationpublic class DataSourceConfig implements TransactionManagementConfigurer { @Value("${spring.profiles.active}") private String profiles; @Value("${spring.datasource.url}") private String url; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; @Value("${spring.datasource.driverClassName}") private String driverClassName; @Value("${spring.datasource.max-active}") private Integer maxActive; @Value("${spring.datasource.max-idle}") private Integer maxIdle; @Value("${spring.datasource.min-idle}") private Integer minIdle; @Value("${spring.datasource.initial-size}") private Integer initialSize; @Value("${spring.datasource.validation-query}") private String validationQuery; @Value("${spring.datasource.test-on-borrow}") private Boolean testOnBorrow; @Value("${spring.datasource.test-on-return}") private Boolean testOnReturn; @Value("${spring.datasource.test-while-idle}") private Boolean testWhileIdle; @Bean public DataSource dataSource() { DataSource ds = new DataSource(); ds.setUrl(url); ds.setUsername(username); ds.setPassword(password); ds.setDriverClassName(driverClassName); ds.setMaxActive(maxActive); ds.setMinIdle(minIdle); ds.setInitialSize(initialSize); ds.setValidationQuery(validationQuery); ds.setTestOnBorrow(testOnBorrow); ds.setTestOnReturn(testOnReturn); ds.setTestWhileIdle(true); return ds; } @Primary @Bean EntityManagerFactory entityManagerFactory() { LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean(); emf.setDataSource(dataSource()); emf.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); emf.setPackagesToScan("com.spring.jensen"); emf.setPersistenceUnitName("default"); emf.afterPropertiesSet(); return emf.getObject(); } @Bean public PlatformTransactionManager transactionManager() { return new JpaTransactionManager(entityManagerFactory()); } @Override public PlatformTransactionManager annotationDrivenTransactionManager() { return null; }}
阅读全文
0 0
- Spring使用定时器时无法获取事务问题
- Spring quartz 使用中的定时器,停滞问题
- Hibernate使用Spring进行单元测试时的事务问题
- 使用Spring配置事务时遇到的问题
- Spring MVC 使用ajax时,控制器无法获取客户端参数
- spring无法获取defaultServletName的问题查找
- 定时器(Spring定时器)使用
- Idea java ssm maven 项目 spring事务无法使用
- 解决 spring mvc 3.0 结合 hibernate3.2 使用<tx:annotation-driven>声明式事务无法提交的问题
- 解决 spring mvc 3.0 结合 hibernate3.2 使用<tx:annotation-driven>声明式事务无法提交的问题
- 解决 spring mvc 3.0 结合 hibernate3.2 使用<tx:annotation-driven>声明式事务无法提交的问题
- Spring定时器简单使用
- spring定时器的使用
- Spring定时器的使用
- Spring定时器的使用
- Spring定时器的使用
- 定时器实现 使用spring
- Spring定时器使用例子
- c++面向对象笔记
- 求平均值
- workerman实现直播功能
- Android | 设备旋转
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink实战基础0019--IDEA搭建maven管理的集成开发环境001
- Spring使用定时器时无法获取事务问题
- Spring-Cloud 熔断器 Hystrix
- Kafka->Spark Streaming->mongodb
- 工作过程中需要加强的技术
- CentoS安装配置VNC
- C#窗体绘制波形
- matlab save
- Unity 导出的Xcode工程
- 第十一周项目3(1)-图遍历算法实现(DFS)