`
wls981
  • 浏览: 135939 次
  • 性别: Icon_minigender_1
  • 来自: 桂林
社区版块
存档分类
最新评论

Spring AOP之类内方法调用

 
阅读更多

示例bean:

public class SomeBean {
	public void methodA() {
		this.methodB();
	}

	public void methodB() {
		System.out.println("methodB executing...");
	}
}
public class TestBean
{
	private SomeBean someBean;
	public void outterMethod() {
		someBean.methodA();
	}
	public void outterMethod2() {
		someBean.methodB();
	}
	//getter&setter 略...
}

 

上述两个类被定义成Spring的bean,并且outterMethod、methodA和methodB都在Spring的aop拦截范围内。

当由外部调用testBean.outterMehtod()方法时,产生了一次AOP拦截,接着outterMehtod调用someBean.methodA()时,又产生了一次AOP拦截,但是当methodA调用methodB时,将不会产生AOP拦截。

也就是说Spring中同一个bean的内部方法之间的调用,是不会产生AOP代理的。

 

基于以上原因,在Spring的事务配置中,如果methodB的每次调用都需要开启一个新的事务的话(propagation设置成REQUIRS_NEW),则当执行outterMethod方法时methodB无法成功开启新事务(因为methodB由methodA调用)。但是当执行outterMethod2方法时,methodB可以成功开启属于自己的新事务。

因此,如果methodB一定要开启一个自己的AOP代理的话,请把methodB放在一个独立的类中并且确保methodB不在类内部被调用。

分享到:
评论

相关推荐

    Spring高级之注解驱动开发视频教程

    AOP是让方法间的各个部分更加独立,达到统一调用执行,使后期维护更加的方便。 SpringMVC本身是对Servlet和JSP的API进行了封装,同时在此基础上进一步加强。它推出的一套注解,可以降低开发人员的学习成本,从而更...

    Spring技术内幕:深入解析Spring架构与设计原理

     spring实现远端调用的方案有很多种,你知道它们之间的优劣差异吗?  spring acegi安全框架在用户验证和授权机制的实现上有何过人之处?  如何在spring的基础上进行扩展开发?  你是否曾经也有过分析开源软件...

    spring杂谈 作者zhang KaiTao

    1.6 »Spring 之AOP AspectJ切入点语法详解(最全了,不需要再去其他地找了) 1.7 Spring开闭原则的表现-BeanPostProcessor扩展点-2 1.8 Spring3.1 对Bean Validation规范的新支持(方法级别验证) 1.9 Spring对事务...

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    这个jar文件包含在应用中使用Spring的AOP特性时所需的类。使用基于AOP的Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包。 (4) spring-context.jar  这个jar文件...

    Spring.3.x企业应用开发实战(完整版).part2

    10.6.1 哪些方法不能实施Spring AOP事务 10.6.2 事务增强遗漏实例 10.7 数据连接泄漏 10.7.1 底层连接资源的访问问题 10.7.2 Spring JDBC数据连接泄漏 10.7.3 通过DataSourceUtils获取数据连接 10.7.4 通过...

    Spring.net框架

    经过改造后,SayHello不再依赖于具体的HelloGenerator,而是依赖于IHelloGenerator接口,如此一来,我们可以 动态的将EnHelloGenerator或是CnHelloGenerator赋给SayHello,其打印行为也随之发生改变。接口的定义以及...

    Spring面试题

    ☆ Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象...

    Spring3.x企业应用开发实战(完整版) part1

    10.6.1 哪些方法不能实施Spring AOP事务 10.6.2 事务增强遗漏实例 10.7 数据连接泄漏 10.7.1 底层连接资源的访问问题 10.7.2 Spring JDBC数据连接泄漏 10.7.3 通过DataSourceUtils获取数据连接 10.7.4 通过...

    Spring in Action(第2版)中文版

    第1章开始spring之旅 1.1spring是什么 1.2开始spring之旅 1.3理解依赖注入 1.3.1依赖注入 1.3.2di应用 1.3.3企业级应用中的依赖注入 1.4应用aop 1.4.1aop介绍 1.4.2aop使用 1.5小结 第2章基本bean装配 ...

    Spring in Action(第二版 中文高清版).part2

    第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP使用 1.5 小结 第2章 ...

    Spring in Action(第二版 中文高清版).part1

    第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP使用 1.5 小结 第2章 ...

    java面试题

    wait()是Object类的方法,对此对象调用了wait方法导致本线程放弃对象锁,进入等待锁定池,只有针对此对象发出notify方法后本线程才进入对象锁定池准备获得对象锁进入运行状态。 同步和异步,在什么情况下分别使用? ...

    Java 基础核心总结 +经典算法大全.rar

    通过反射调用方法反射的应用场景 Spring 的 IOC 容器反射 + 抽象工厂模式 JDBC 加载数据库驱动类反射的优势及缺陷 增加程序的灵活性破坏类的封装性 性能损耗 代理模式 静态代理与动态代理常见的动态代理实现JDK ...

    ssh(structs,spring,hibernate)框架中的上传下载

     文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...

    springmybatis

    mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in ...

    蚂蚁云客服机器人面试答案.docx

    依赖注入的思想是通过反射机制实现的,在实例化一个类时,它通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中。 总而言之,在传统的对象创建方式中,通常由调用者来创建被调用者的实例,而在Spring...

    java三大框架

    在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实 现J2EE的应用;DAO...

    超级玛丽源码Java-Spring5:春天5

    超级玛丽源码Java 一 IOC 实现原理: 工厂模式 通过xml配置文件获取类的全路径 再根据反射的Class.forName(全路径)获取类的class...(5)当容器关闭时候,调用bean的销毁的方法(需要进行配置销毁的方法) 二 AOP 1、什么

    低清版 大型门户网站是这样炼成的.pdf

    (Struts 2+Spring 2+Hibernate 3).pdf(完整版) 网上有高清版350M的。可以去下 http://115.com/file/be5gwid8 请于下载后 24H 内及时删除!请抱着学习的态度下载此资料。 总共900多页!!!!!!! 第1篇 ...

Global site tag (gtag.js) - Google Analytics