1、最近做项目使用了多线,但是发现多线程事务无法起作用,就是多线程运行时每个线程的方法虽然加了事务的注解但是数据插入依旧不会回滚
2、此时主线程操作数据插入事物是起作用的。
springboot 解决办法
先获取spring的context
配置中 添加事物管理器1
package luculent.fupin.tools;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class SpringUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext = null;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException{
if (SpringUtil.applicationContext == null) {
SpringUtil.applicationContext = applicationContext;
}
}
// 获取applicationContext
public static ApplicationContext getApplicationContext(){
return applicationContext;
}
// 通过name获取 Bean.
public static Object getBean(String name){
return getApplicationContext ().getBean (name);
}
// 通过class获取Bean.
public static <T> T getBean(Class<T> clazz){
return getApplicationContext ().getBean (clazz);
}
// 通过name,以及Clazz返回指定的Bean
public static <T> T getBean(String name,Class<T> clazz){
return getApplicationContext ().getBean (name, clazz);
}
}
import java.util.Properties;
import javax.sql.DataSource;
import org.springframework.boot.bind.RelaxedPropertyResolver;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Co