spring aop事务配置注意事项
业务逻辑模块需要事务,在spring中是太常见不过的事情了。AOP配置事务,网上文章很多,大概就是这个样子:
<aop:config > <!-- <aop:pointcut id="allManagerMethod" expression="execution(* com.amarsoft..*(..))" /> <aop:pointcut id="custService" expression="execution(* com.amarsoft.cust.service..*(..))" /> --> <aop:pointcut id="service" expression="execution(* com.amarsoft..*ServiceImpl.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="service" /> </aop:config>
调用代码:
@Test public void doTransaction(){ CustomerService custService = Apx.bean(EntCustomerServiceImpl.class); EntCustomer entCust = new EntCustomer(); entCust.setCustName("测试-公司客户1-客户处理服务"); entCust.setChnName("测试-公司客户1-客户处理服务"); entCust.setCustType("10"); entCust.setCertType("Ent01"); entCust.setCertNo("71724724-6"); int r = 0; try { r = custService.saveCustomer(entCust); Assert.assertEquals(1, r); r = custService.deleteCustomer(entCust.getCustId()); // Assert.assertEquals(2, r); //删除CI表和EI表,因此这里是2 } catch (CustomerException e) { e.printStackTrace(); } }
然后异常出来了:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.amarsoft.cust.service.impl.EntCustomerServiceImpl] is defined at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:295) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1125) at com.amarsoft.apm.ApmContext.getBean(ApmContext.java:124) at com.amarsoft.apm.Apx.bean(Apx.java:36) at com.amarsoft.cust.CustomerServiceTestCase.doTransaction(CustomerServiceTestCase.java:24) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
网上查了N多资料,最后一个东西引起了我的注意:
proxy-target-class="true"
于是调整了下配置文件 :
<aop:config proxy-target-class="true"> <!-- <aop:pointcut id="allManagerMethod" expression="execution(* com.amarsoft..*(..))" /> <aop:pointcut id="custService" expression="execution(* com.amarsoft.cust.service..*(..))" /> --> <aop:pointcut id="service" expression="execution(* com.amarsoft..*ServiceImpl.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="service" /> </aop:config>
自己记录下,有遇到类似问题的同学,给你参考下。
相关推荐
yupi0 2020-10-10
spring 2020-08-18
编程点滴 2020-07-29
幸运小侯子 2020-07-05
itjavashuai 2020-07-04
qingjiuquan 2020-06-29
shushan 2020-06-25
小鱿鱼 2020-06-22
咻pur慢 2020-06-18
melonjj 2020-06-17
qingjiuquan 2020-06-13
neweastsun 2020-06-05
小鱿鱼 2020-06-05
mxcsdn 2020-05-31
吾日五省我身 2020-05-27
牧场SZShepherd 2020-05-27
sweetgirl0 2020-05-14