为了账号安全,请及时绑定邮箱和手机立即绑定

都说声明式事务管理是基于AOP的 但是我不明白 我调用我的代码 spring是怎么插一杠子

都说声明式事务管理是基于AOP的 但是我不明白 我调用我的代码 spring是怎么插一杠子

胡说叔叔 2019-03-14 18:15:24
Spring提供的事务管理有两种方式,编程式的和声明式的. 编程式的繁琐,我一般不喜欢用.最喜欢的一种是利用Spring封装的aspectJ, 利用Aop来管理事务很方便的.applicationcontext.xml1首先创建一个事务管理器<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory">  </property>  </bean>2声明一个通知, 并声明此通知受某一个事务管理器管理<tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save*" /> <tx:method name="*" readonly="true" /> </tx:attributes> </tx:advice>上面的一段话说明了txAdvice受transactionManager事务管理器管理, 并且管理save打头的方法. 其余的都不使用事务管理.3最后利用advisor配置advice的切入点.<aop:config> <aop:advisor advice-ref="txAdvice"pointcut="execution(pulic * *..*.service.*.*(..))"></aop:advisor> </aop:config>这样, 只要经过service层就会进入事务管理.(begin - save - commit)动态代理我想问为什么 经过service层就会进入事务管理 别说动态代理 具体是怎么做的
查看完整描述

5 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

我想这个问题的关键在于理解AOP上。

面向切面(AOP)的实现很大程度上依赖的是控制扭转(IOC),这两个概念就不详细说了,百度一下都能找到。

关键点在于控制扭转上,正常的程序控制是有由你,也就是编程者进行的。而控制扭转后,实际上程序的控制着是实现控制扭转的框架,这里就是Spring。所以你有一个很关键的误解,就是我调用我的代码。实际上调用你代码的不是你,而是框架,既然调用你程序的是框架,那它自然就有机会去查询你的代码里是否有面向切面的配置,如果有,它也有机会去执行这些配置


查看完整回答
反对 回复 2019-04-25
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

关键字:动态代理.多学习如何利用搜索引擎获取知识


查看完整回答
反对 回复 2019-04-25
?
慕村225694

TA贡献1880条经验 获得超4个赞

前段时间刚好写过一篇文章,《Spring AOP的实现原理》


查看完整回答
反对 回复 2019-04-25
  • 5 回答
  • 0 关注
  • 712 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号