如何使用AspectJ实现Spring @Transactional自我调用

时间:2016-02-25 09:45:09

标签: java spring

我已经使用AspectJ将@Transactional添加到非Bean类和非公共方法。但是,我仍然无法使自我成功。

这是我的transcation manager配置类

@Configuration
@EnableTransactionManagement
public class DBConfig {
    @Bean(name = "transactionManager")
    public PlatformTransactionManager transactionManager() {
        DataSourceTransactionManager txManager = new DataSourceTransactionManager(DATA_SOURCE);
        AnnotationTransactionAspect.aspectOf().setTransactionManager(txManager);
        return txManager;
    }
}

这是我的加载时weaver配置

@Configuration
@EnableLoadTimeWeaving
public class AspectJConfig implements LoadTimeWeavingConfigurer {

    @Override
    public LoadTimeWeaver getLoadTimeWeaver() {
        return new InstrumentationLoadTimeWeaver();
    }
}

这是我的自我调用代码

public class Test {
    @Transactional
    public void testA() {
        testB();
        //......
    }

    @Transactional(propagation = Propagation.NEVER)
    public void testB() {
        //......
    }
}

当我调用testA时,预计会抛出异常,因为我已将传播定义为NEVER。然而,实际上什么都没发生。

所以有人会帮助我吗???

0 个答案:

没有答案