【发布时间】:2015-02-10 22:51:33
【问题描述】:
在 Spring 中将方面配置为:
@Configuration
@EnableAspectJAutoProxy
@EnableTransactionManagement
public class TestConfiguration {
@Bean
public TransactionAspect transactionAspect(){
return new TransactionAspect();
}
而TransactionAspect是:
@Aspect
class TransactionAspect extends TransactionSynchronizationAdapter
{
private final Logger logger = LoggerFactory.getLogger(TransactionAspect.class);
@Before("@annotation(org.springframework.transaction.annotation.Transactional)")
public void registerTransactionSyncrhonization()
{
TransactionSynchronizationManager.registerSynchronization(this);
}
@Override
public void afterCommit()
{
logger.info("After commit!");
}
}
如果我用@Transactional 注释实现方法,TransactionAspect 将按预期工作。但是如果注释在接口上,它就不起作用。这是正常行为还是我做错了什么?
【问题讨论】:
标签: spring aop aspectj spring-annotations