我们可以使用下面两种方式消除proxyFactoryBean的繁重配置
1.继承parent bean
2.使用aop 自动代理
spring中的事务都是基于AOP的,我们同样可以使用自动代理消除TransactionProxyFactoryBean的重负实例
首先,我们要做任何自动通知一样,需要声明一个bean,成为DefaultAdvisorAutoProxyCreator


DefaultAdvisorAutoProxyCreator将在应用上下文中遍历advisor,自动用它们来代理匹配advisor的pointcut的所有bean,对于事务,应该使用advisor是TransactionAttributeSourceAdvisor





TransactionAttributeSourceAdvisor是一个羽翼丰满的AOP Advisor,同样,他有一个pointcut和一个advisor构成,这个pointcut是静态方法pointcut,他根据事物属性来源确定一个方法是否和一些事务属性关联,关于拦截器advisor,通过一个构造参数transactionInterceptor













为自动代理选择一个transactionAttributeSource







关于属性源,我们有一个更好的解决方法





等等还没有完,我们更好的选择是使用AttributesTransactionAttributeSouce,即元数据,我们使用方法事务化和非事务化,只不过是添加合适的元数据到方法里而已