因为一些原因,我要做个测试,就是关闭所有事务的情况下所出现的情况。
怎么把整个项目的 @Transactional事务都关掉?包括jar里的。
有什么注解么?
让整个项目处于无事务状态
@Component
public class CustomBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {
@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
registry.removeBeanDefinition("transactionAttributeSource");
AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(AnnotationTransactionAttributeSource.class).setRole(2).getBeanDefinition();
AnnotationMethodMatcher methodMatcher = new AnnotationMethodMatcher(Exclude.class);
beanDefinition.setInstanceSupplier(() -> new AnnotationTransactionAttributeSource(){
@Override
public TransactionAttribute getTransactionAttribute(Method method, Class<?> targetClass) {
return null;
}
});
registry.registerBeanDefinition("transactionAttributeSource", beanDefinition);
}
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
}
}
spring容器移除掉这个advisor就行了
试试排除事务的自动配置:@SpringBootApplication(exclude = TransactionAutoConfiguration.class)