`
8366
  • 浏览: 813234 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

SpringAOP 的使用(两种方式)

阅读更多

 

 

 使用Spring AOP 拦截 方法,给被拦截的方法加上,前置通知,后置通知,例外通知,最终通知 的两个例子,见 附件

需要 spring.jar,cglib.jar,commons-logging.jar

 

方式1. 被拦截的类没有实现任何接口

 

关键代码:

package junit.test;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.aop.framework.ProxyFactoryBean;
import org.springframework.aop.support.DefaultPointcutAdvisor;

import cn.com.xinli.common.BusinessMethodInterceptor;
import cn.com.xinli.service.BusinessInterface;
import cn.com.xinli.service.impl.BusinessImpl;
/*springAOP 测试方式1 的测试用例 只需要spring.jar 支持
 * 
 * */
public class AOPTest
{
	static BusinessInterface face=null;
	@BeforeClass
	public static void setUpBeforeClass() throws Exception
	{
		BusinessImpl bi=new BusinessImpl();
		ProxyFactoryBean proxyFactoryBean = new ProxyFactoryBean();
		proxyFactoryBean.setTarget(bi);
		proxyFactoryBean.addAdvisor(new DefaultPointcutAdvisor(new BusinessMethodInterceptor()));
		proxyFactoryBean.setInterfaces(new Class[]{BusinessInterface.class});
		face= (BusinessInterface)proxyFactoryBean.getObject();
	}

	@Test
	public void testAdd() throws Exception
	{
		
		
		
		face.add();
	}

	@Test
	public void testDel()
	{
		face.del();
	}

	@Test
	public void testFind()
	{
		face.find();
	}

	@Test
	public void testUpdate()
	{
		face.update();
	}

}

 

 

 

方式2. 被拦截的类没有实现任何接口

 

关键代码:

 

package junit.test;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.aop.framework.ProxyFactoryBean;
import org.springframework.aop.support.DefaultPointcutAdvisor;

import cn.com.xinli.common.BusinessMethodInterceptor;
import cn.com.xinli.service.impl.Business;
/*springAOP 测试方式2 的测试用例 需要spring.jar和cglib.jar 支持
 * 
 * */
public class AOPTest2
{
	static Business business =null;
	@BeforeClass
	public static void setUpBeforeClass() throws Exception
	{
				/**/
				ProxyFactoryBean proxyFactoryBean = new ProxyFactoryBean();
				proxyFactoryBean.addAdvisor(new DefaultPointcutAdvisor( new BusinessMethodInterceptor()));
				proxyFactoryBean.setTarget(new Business());
				business = (Business) proxyFactoryBean.getObject();
	}

	@Test
	public void testAdd() throws Exception
	{
		/*另一种调用方式*/
		Business target = new Business();
        ProxyFactory pf = new ProxyFactory();
        pf.addAdvice(new BusinessMethodInterceptor()); 
        pf.setTarget(target);
        Business proxy = (Business) pf.getProxy();
        //输出代理对象调用的信息
         proxy.add();    
	}

	@Test
	public void testDel()
	{
		business.del();
	}

	@Test
	public void testFind()
	{
		business.find();
	}

	@Test
	public void testUpdate()
	{
		business.update();
	}

}

 

参考:

 

http://blog.csdn.net/Jyeafee/archive/2006/01/11/575972.aspx  

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    spring aop demo 两种实现方式

    本示例提供了一种通过注解和配置文件两种方式实现Spring AOP的方法。 首先,我们来详细讲解通过注解实现Spring AOP。在Spring中,我们可以使用`@Aspect`注解来定义一个切面,这个切面包含了多个通知(advice),即...

    死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序.pdf

    在 Spring 中,AOP 的实现主要依赖于代理模式,有两种代理方式:JDK 动态代理和 CGLIB 动态代理。 JDK 动态代理是基于接口的,它要求被代理的目标对象必须实现至少一个接口。Spring 使用 `java.lang.reflect.Proxy`...

    Spring Aop使用实例

    Spring AOP有两种实现方式:基于代理的AOP(JDK动态代理和CGLIB代理)和基于注解的AOP。 - **JDK动态代理**:当目标类实现了接口时,Spring会使用JDK的Proxy类创建一个代理对象,该代理对象会在调用接口方法时插入...

    springAop默认代理方式.zip

    1. **静态代理**:Spring AOP 提供了两种代理方式,一种是静态代理,另一种是动态代理。静态代理是在编译时就确定了代理类,这种代理方式通常通过实现相同接口的方式创建。然而,Spring AOP默认并不使用静态代理,...

    Spring AOP 16道面试题及答案.docx

    Spring支持两种AOP的实现方式:Spring AspectJ注解风格和Spring XML配置风格。使用AspectJ注解风格是最常见的,它允许开发者直接在方法上使用注解来定义切面。 Spring AOP中有五种不同类型的的通知(Advice): 1....

    简单spring aop 例子

    在Spring AOP中,切面主要通过两种方式实现:代理(Proxies)和织入(Weaving)。 1. **代理**:Spring AOP支持两种类型的代理:JDK动态代理和CGLIB代理。JDK代理用于实现了接口的类,而CGLIB代理则用于没有接口或...

    JavaEE Spring AOP使用

    压缩包中的`SpringAOPTest`可能包含了一个Spring AOP的示例,包括了注解和XML配置的两种方式。通过分析这个测试案例,你可以了解如何在实际项目中实现AOP。例如,它可能包含了一个带有切面逻辑的切面类,使用了`@...

    Spring AOP实现机制

    Spring AOP主要通过两种方式实现:JDK动态代理和CGLIB代理。 - **JDK动态代理**: - 当目标对象实现了至少一个接口时,Spring会使用JDK的java.lang.reflect.Proxy类创建一个代理对象。 - 代理对象在调用实际方法...

    spring aop的两种配置方式.docx

    Spring AOP提供了两种主要的配置方式:XML配置和注解配置。接下来我们将详细探讨这两种配置方式。 **一、基于XML的Spring AOP配置** 在传统的Spring AOP配置中,我们通常会在`applicationContext.xml`或类似的配置...

    SpringAop两种配置demo

    Spring AOP,全称Spring面向切面编程,是Spring框架中的一个重要组成部分,它提供了一种在不修改原有代码的情况下,对...了解并熟练掌握这两种配置方式,能够帮助我们更好地利用Spring AOP提高代码的可维护性和复用性。

    spring aop的demo

    在`springAop1`这个压缩包中,可能包含了一个简单的应用示例,展示了如何定义一个切面类,以及如何在该类中定义通知方法。例如,我们可能会看到一个名为`LoggingAspect`的类,其中包含了`@Before`注解的方法,用于在...

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    Spring框架中的AOP模块使用了动态代理来实现AOP概念。Spring AOP允许开发者定义切面,并在这些切面中指定拦截的方法。Spring AOP支持不同的代理策略,包括JDK动态代理和CGLIB代理。如果被代理的类没有实现接口,...

    Spring AOP面向方面编程原理:AOP概念

    Spring提供了两种类型的代理:JDK动态代理和CGLIB代理。 8. **编织(Weaving)**:是指将通知插入到目标对象的过程。Spring AOP是在运行时完成的织入过程,即在程序运行时动态地添加通知。 #### 三、Spring AOP的...

    Spring实现AOP的4种方式

    Spring的AOP支持两种代理类型:JDK动态代理和CGLIB代理。JDK动态代理适用于实现了接口的目标对象,它会为这些对象创建一个实现了相同接口的代理对象。而CGLIB代理则是在运行时为目标类生成一个子类,如果目标类没有...

    Spring基础:Spring AOP简单使用

    在Spring中,AOP通过代理模式实现,可以分为JDK动态代理和CGLIB代理两种方式。 1. **AOP概念** - **切面(Aspect)**:切面是关注点的模块化,比如日志、安全检查等,它将分散在代码各处的相同关注点集中在一起。 ...

    spring aop spring aop

    在`PersonProxy`类中,`before()`和`after()`就是两种不同类型的的通知。 4. **织入(Weaving)**:织入是将切面应用到目标对象来创建新的代理对象的过程。Spring支持三种织入方式:编译时织入、类加载时织入和运行...

    spring之AOP(动态代理)

    在Spring中,AOP主要通过两种动态代理技术实现:JDK动态代理和CGLIB动态代理。 首先,让我们详细了解一下JDK动态代理。JDK动态代理基于Java的接口实现,它适用于目标对象实现了至少一个接口的情况。在运行时,JDK...

    springAop的配置实现

    - **代理(Proxy)**:Spring AOP通过代理模式来实现切面功能,有JDK动态代理和CGLIB代理两种方式。 **2. JDK 动态代理** - 当目标类实现了接口时,Spring AOP会选择使用JDK动态代理。它会生成一个实现了目标类所有...

Global site tag (gtag.js) - Google Analytics