我在使用spring mvc 的时候,想学习下aop的用法,但是在配置的时候出错了。由于在applicationContext.xml中,通过<aop>对所有Service进行事务增强,因此Spring容器会对所有所有XxxService的Bean进行动态代理,在配置aop的时候就会报错,请帮忙解决下.....
applicationContext.xm 代码:
<aop:config proxy-target-class="true">
<aop:pointcut id="executeService"
expression="execution(* *..service*..*(..))" />
<aop:advisor pointcut-ref="executeService" advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="get*" read-only="true" propagation="REQUIRED" />
<tx:method name="search*" read-only="true" propagation="REQUIRED" />
<tx:method name="find*" read-only="true" propagation="REQUIRED" />
<tx:method name="*" propagation="REQUIRED" />
<tx:method name="del*" rollback-for="Exception" />
<tx:method name="save*" rollback-for="Exception" />
<tx:method name="add*" rollback-for="Exception" />
<tx:method name="insert*" rollback-for="Exception" />
<tx:method name="update*" rollback-for="Exception" />
<tx:method name="*" read-only="true" rollback-for="Exception" />
</tx:attributes>
</tx:advice>
<bean id="UserLoginServiceImpl" class="com.system.service.impl.UserLoginServiceImpl"/>
<bean id="userInterceptor" class="com.testAop.userInterceptor"/>
<bean id="userLoginService" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.system.service.UserLoginService</value>
</property>
<property name="target">
<ref local="UserLoginServiceImpl"/>
</property>
<property name="interceptorNames">
<list>
<value>userInterceptor</value>
</list>
</property>
</bean>
------解决方案--------------------
报错呢???
------解决方案--------------------
缺少jar包asm.jar
Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type
------解决方案--------------------
com.system.service.impl.UserLoginServiceImpl.userLoginDao 到service中找到这个变量,看看。这个bean你没在配置文件中定义。
------解决方案--------------------
是同样的错吗,检查下项目是否更新,再检查下是不是jar包冲突。Ctrl+Shift+T查看上面的类,看看能找出几个。
------解决方案--------------------
你的transactionManager怎么没配置。建议检查下配置,还有切面表达式。
transaction-manager="defaultTransactionManager">
------解决方案--------------------
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
<property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
</bean>
<!-- 定义事务管理器(声明式的事务) -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config proxy-target-class="true" >
<aop:pointcut id="interceptorPointCuts"
expression="execution(* org.lgh.spring.transaction5.*.*(..))" />