非常头疼的一个问题 ,一直以为是aop配置出错 ,找资料 改配置怎么改都不对,搜了好久都没解决。
最后新建了一个项目才发现了这个问题
不是配置出错,也不是少包,不是版本冲突
竟然是:。。。
@autowired那里有问题,因为AOP是基于jdk动态代理的 应该注入接口不应注入实现类
因为没有注入接口jdk动态代理失败没有生成bean
而报的这个错误 谨记
网上的其他人说的大部分都是包不全 aop的包要注意基本就是这三个:
aspectjrt.jar
aspectjweaver.jar
aopalliance-1.0.jar
主要还是看aop的配置是否出错
<!-- 事务管理器-->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 传播行为 -->
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="ins*" propagation="REQUIRED" />
<tx:method name="*Add*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="*Del*" propagation="REQUIRED" />
<tx:method name="emp*" propagation="REQUIRED" />
<tx:method name="upd*" propagation="REQUIRED" />
<tx:method name="*Upd" propagation="REQUIRED" />
<tx:method name="sel*" propagation="SUPPORTS" read-only="true" />
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- 切面 -->
<aop:aspectj-autoproxy proxy-target-class="true"/><!-- 代理方式true类的方式 false接口 -->
<aop:config>
<aop:pointcut id="serviceMethod" expression="execution(* com.sccy.hr.service.*.*(..))
|| execution(* com.sccy.hr.base.service.*.*(..))"/>
<!-- 将事务增强与切入点组合(织入事务切面) -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" />
</aop:config>