spring中aop的前值增强

Posted hkmblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring中aop的前值增强相关的知识,希望对你有一定的参考价值。

Spring AOP的几个概念

1.切面(Aspect):切面就是一个关注点的模块化,如事务管理、日志管理、权限管理等;
2.连接点(Joinpoint):程序执行时的某个特定的点,在Spring中就是一个方法的执行;
3.通知(Advice):通知就是在切面的某个连接点上执行的操作,也就是事务管理、日志管理等;
4.切入点(Pointcut):切入点就是描述某一类选定的连接点,也就是指定某一类要织入通知的方法;
5.目标对象(Target):就是被AOP动态代理的目标对象;

spring中包括前置增强、后置增强、和环绕增强等,而前置增强,我们可以讨论一下他们的使用:

我的代码如下:

定义一个接口IHello.java

package Spring;

public interface IHello { //定义一个接口
public void hello(String name);

}

创建一个类实现接口HelloSpacker.java

package Spring;

public class HelloSpacker implements IHello{

       //继承该接口,并且实现接口的方法

@Override
public void hello(String name){
System.out.println("hello,"+name);
}
}

创建一个类实现前值增强LogBeforeAdvice.java

package Spring;

import java.lang.reflect.Method;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.springframework.aop.MethodBeforeAdvice;

public class LogBeforeAdvice implements MethodBeforeAdvice{
//继承MethodBeforeAdvice,前值增强设计为一个独立的类
private Logger logger=Logger.getLogger(this.getClass().getName());
@Override
public void before(Method method,Object[] arg, Object target) //前置增强实现的方法
throws Throwable {
logger.log(Level.INFO,"method start..."+method);
} //前置增强
}

配置文件spring.xml

                技术图片

测试类SpringDemo.java

package Spring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringDemo {
public static void main(String[] args) {
@SuppressWarnings("resource")
ApplicationContext context=new ClassPathXmlApplicationContext("Spring.xml");
IHello helloProxy=(IHello)context.getBean("helloProxy");
helloProxy.hello("Justin!!!");

}
}

后置增强的代码,实现AfterReturningAdvice接口

 

public class LogAfterAdvice implements AfterReturningAdvice{
Logger logger=Logger.getLogger(this.getClass().getName());

 

@Override
public void afterReturning(Object object, Method method,Object[] target,
Object args) throws Throwable {
logger.log(Level.INFO,"Methdo ends..."+method);

}
}

 

 测试代码结果

技术图片

 

 

 

以上是关于spring中aop的前值增强的主要内容,如果未能解决你的问题,请参考以下文章

AOP执行增强-Spring 源码系列

spring框架前置增强,后置增强,和环挠增强,异常增强有什么作用

Spring学习(二十五)Spring AOP之增强介绍

Spring框架-AOP原理

Spring中切面详解(AOP)

Spring AOP-----------基础