<!-- 事务相关配置 -->
<tx:advice id="txdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="delete*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" no-rollback-for="java.lang.RuntimeException"/>
<tx:method name="insert*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.RuntimeException" />
<tx:method name="update*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="find*" propagation="SUPPORTS"/>
<tx:method name="get*" propagation="SUPPORTS"/>
<tx:method name="select*" propagation="SUPPORTS"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="pc" expression="execution(public * org.ssm.services.impl.*.*(..))" /> <!--把事务控制在Service层-->
<aop:advisor pointcut-ref="pc" advice-ref="txdvice" />
</aop:config>
<context:component-scan base-package="org.ssm.services.impl"
name-generator="org.ssm.overwrite.spring.ServicesNameGenerator"
use-default-filters="false"
annotation-config="false">
<context:include-filter type="regex" expression=".*Impl"/>
</context:component-scan>
Service的dao还是无法注入呀,求指教哦, 谢谢!!!
错误的原因是Services里面 userDao 是空的 ,spring 没有成功注入
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
官方文档有说明,BeanPostProcessors and AOP auto-proxying,使用后者的话前者就不生效了,因为动态代理实际上自身就相当于一个BeanPostProcessors。还有,你的代码里这个类是处理impl结尾的,但是用cglib生成的动态类名后面会多一些标识,因此要改成判断prefix包名。如果用jdk proxy则是sun生成的代理类,情况更加不同。关键是,代理类每次都会生成新的,不会保存到beanfactory中,因此解决方法是在aop生成代理类之后再注入依赖bean,这样是可行的,可以找下aop的相关接口。