Transactional 被嵌套方法方法事务不生效



    
    
    
    
    
    
        
    
    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    
    
    
    
    
        
        
        
        
        
        
    
    
    
        
        
        
    
    
    
    
        
    
    
    
    

 

@Service
public class TransactionServiceImpl {
    @Autowired
    private BannerMapper bannerMapper;

    public BaseDTO  addBanner( ) {
        Banner banner = new Banner();
        banner.setId(UUID.randomUUID().toString().substring(0,21));
        banner.setRemarks("test");
        //     这样才可以使用,否则直接调用addBannerDo方法事物不生效
        int i = ((TransactionServiceImpl)AopContext.currentProxy()).addBannerDo(banner);
        System.out.println(banner);
        int k=0/100;
        return null;
    }
    @Transactional
    public int addBannerDo( Banner banner){
        int i = bannerMapper.insertSelective(banner);
        System.out.println(i);
        return i;
    }
}

 

public class Test {
    public static void main(String[] args) {
        ApplicationContext context= null;// new ClassPathXmlApplicationContext("spring/applicationContext.xml");
        context=  new ClassPathXmlApplicationContext("classpath:test-spring-mybatis.xml");
        for (int i = 0; i <  context.getBeanDefinitionNames().length; i++) {
            System.out.println( context.getBeanDefinitionNames()[i]);
        }
        TransactionServiceImpl transactionServiceImpl = (TransactionServiceImpl) context.getBean("transactionServiceImpl");
        transactionServiceImpl.addBanner();

    }
}

你可能感兴趣的:(Transactional 被嵌套方法方法事务不生效)