码迷,mamicode.com
首页 > 编程语言 > 详细

spring中aop的前值增强

时间:2019-05-01 13:26:55      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:margin   return   throw   ble   src   mic   font   ati   text   

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的前值增强

标签:margin   return   throw   ble   src   mic   font   ati   text   

原文地址:https://www.cnblogs.com/hkMblogs/p/10799494.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!