请教个Spring AOP 切入点的问题
项目很简单,就用了Spring + SpringMVC + mybatis。
包名是:com.公司名.项目名.模块名.service.impl
在spring中配置事物用到AOP,
如果使用execution (* com.公司名.项目名..*.*(..))这样就运行正常
但配置为 execution (* com.公司名.项目名.*.service.*.*(..)) 这样就会报 JDBC Connection will not be managed by Spring
要怎么样配置才能是切面只影响到service,而不影响到其他的controller,entity的方法呢?
感谢各位了!
6 个解决方案
#1
事务没开启?参考下http://blog.csdn.net/simon_1/article/details/51182117
#2
aop支持以什么开头或者以什么结尾的表达式配置。
#3
你好,我没有用注解标记事物,而是想用AOP切入所有的service走事物
<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="*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="get*" read-only="true" />
<tx:method name="list*" read-only="true" />
<tx:method name="query*" read-only="true" />
<tx:method name="find*" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config>
<!-- 定义一个切入点 -->
<aop:pointcut
expression="execution (* com.公司名.项目名..*.*(..))"
id="services" />
<!-- 对切入点和事务的通知,进行适配 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="services" />
</aop:config>
#4
就是那样配的:
应该是你别的地方配错了,再检查一下
应该是你别的地方配错了,再检查一下
#5
感觉,没毛病啊
#6
你好,看spring的官方文档 http://docs.spring.io/spring/docs/4.2.7.RELEASE/spring-framework-reference/htmlsingle/#aop-pointcuts-examples可以用*.*的方式匹配任意class的任意方法
#1
事务没开启?参考下http://blog.csdn.net/simon_1/article/details/51182117
#2
aop支持以什么开头或者以什么结尾的表达式配置。
#3
你好,我没有用注解标记事物,而是想用AOP切入所有的service走事物
<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="*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="get*" read-only="true" />
<tx:method name="list*" read-only="true" />
<tx:method name="query*" read-only="true" />
<tx:method name="find*" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config>
<!-- 定义一个切入点 -->
<aop:pointcut
expression="execution (* com.公司名.项目名..*.*(..))"
id="services" />
<!-- 对切入点和事务的通知,进行适配 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="services" />
</aop:config>
#4
就是那样配的:
应该是你别的地方配错了,再检查一下
应该是你别的地方配错了,再检查一下
#5
感觉,没毛病啊
#6
你好,看spring的官方文档 http://docs.spring.io/spring/docs/4.2.7.RELEASE/spring-framework-reference/htmlsingle/#aop-pointcuts-examples可以用*.*的方式匹配任意class的任意方法