spring_AOP

例子代码

理解AOP

  AOP为Aspect Oriented Programming的缩写,意为:面向切面编程。大概意思就是在原有源代码的基础上,增加功能,而又不修改原有的代码。

术语

切面(Aspect):进行增加处理的类,比如对一功能增加日志管理操作,定义的日志类便是一个切面。

连接点(Joinpoint):明确的切入点,如com.xyz.myapp.SystemArchitecture.dataAccessOperation()

切入点(Pointcut):可以看成是连Joinpoint的集合,如@Pointcut("execution(public * com.bjsxt.service..*.add(..))")

增强处理(Advice):如Around,Before,After,AfterReturning,AfterThrowing

增强处理

Around:在切入点方法运行时先运行增强处理方法,在切入点方法运行结束后再运行增强处理方法。@Around("execution(* org.crazyit.app.service.impl.*.*(..))")

Before:在切入点主法运行时先运行增强处理方法,@Before("execution(* org.crazyit.app.service.impl.*.*(..))")

After:在切入点方法运行结束后再运行增强处理方法(不管目标方法如何结束(包知成功完成和遇到异常中止两种情况),都会被织入。@After("execution(* org.crazyit.app.service.*.*(..))"

AfterReturning:在切入点方法运行结束后再运行增强处理方法(只有在目标方法成功完成后才会被织入)。如下所示:

@AfterReturning(returning="rvt",pointcut="execution(* org.crazyit.app.service.impl.*.*(..))")
public void log(Object rvt){
  System.out.println("获取目标方法返回值:"+rvt);
  System.out.println("模拟记录日志功能...");
}

AfterThrowing:在抛出异常时织入。

AOP的annotation与xml

annotation

XML

  

spring_AOP,布布扣,bubuko.com

时间: 2024-10-26 18:19:35

spring_AOP的相关文章

Spring_aop的各个概念

切面是什么呢? 在JDK动态代理中,事务就是切面即  Transaction,Logger,Security等 ,即除了目标类以外类的功能都是切面. 切面中的方法就叫通知 什么叫连接点呢? 客户端调用那个方法那个方法就叫做连接点. 在JDK动态代理中,调用了SavePerson方法,这个方法就叫做连接点   什么叫做切入点? 判断语句就叫做切入点,即条件 即  if("savePerson".equals(methodname)||"updatePerson".eq

spring_aop注解

前置通知注解 @Component("before") //声明是spring容器的bean组件 @Aspect //声明当前组件是切面组件 public class Before{ //表示doBefore函数是一个前置通知 + 该前置通知的切入点程序 @org.aspectj.lang.annotation.Before("execution(* com..*.*(..)") public void doBefore(JoinPoint jp){ } } 后置通

Spring_AOP容器

一.代理模式 1.代理模式的设计原则: ·代理类与委托类具有相似的行为 ·代理类增强委托类的行为 2.代理模式实现的三要素: 代理角色.目标角色.共同行为 实现行为接口,持有目标对象的引用 3.静态代理和动态代理 1)静态代理 特点:程序运行前制作代理角色 代理目标角色单一 代理类数量无法控制 2)动态代理 程序运行期动态创建代理角色 ·JDK动态代理,回调方式实现 ·cglib动态代理,继承方式实现 区别: JDK动态代理:委托类必须要有接口,制作过程较快,执行慢 Cglib动态代理:委托类可

spring的学习____8 spring_AoP的实现方式一:使用spring API实现

(本案例是 idea下的maven项目) 1.UserService(接口的编写): public interface UserService { void add(); void delete(); void update(); void query(); } 2.UserServiceImpl(接口实现类)的编写: public class UserServiceImpl implements UserService { public void add() { System.out.prin

spring_AOP编程

AOP:面向切面编程思想,利用“动态代理”的技术,可以在不改变“目标对象”的基础上,对目标对象的方法进行增强. 通过简单案例引入AOP: 有一个UserServiceImpl类,里面有一个remove方法后来有个新需求 需求1:希望在调用remove方法删除数据前进行权限校验[对remove方法进行增强] 需求2:希望在调用UserServiceImpl类所有的方法前进行权限校验 需求3:希望整个项目中的所有的service类的所有关于数据操作的方法执行前进行权限校验 用工具类,将权限校验的方法

Spring面向切面 --- AspectJ --- 简单使用

Spring面向切面 --- AspectJ --- 简单使用 昨天回复说说的时候突然写下了下面的一段话:分享一下: <!--******************************************* 其实经过的记忆是可以进行道德化的篡改的,就像夏目漱石的<我是猫>:但是不管怎么改,真正的事实是由每一个人的碎片拼起来的:经济学里计算成本的是在计算将来的成本而不是过去的成本,就像动漫<未来日记>一样:过去发生的事情总是在影响着将来,但是过去发生的事情却不能充当将来下

a simple example for spring AOP

/** * Created by Administrator on 2015/11/25. * a interface */public interface ArithmeticCalculator{ int add(int i, int j); int sub(int i, int j); int mul(int i, int j); int div(int i, int j);} public class ArithmeticCalculatorImpl implements Arithme

cglib动态代理(即AOP)

Computer.java package com.wh.spring_aop; public class Computer { public void playLOL(){ System.out.println("LOL进行中..."); } public String result(boolean flag){ System.out.println("公布比赛结果..."); if(flag){ return "您赢了"; }else{ in

spring 课程

官网 参考文档 // 1. Spring_HelloWorld 20:22 // 2. Spring_IOC&DI概述 08:07 // 3. Spring_配置 Bean 21:58 // 4. Spring_属性配置细节 42:56 // 5. Spring_自动装配 14:05 // 6. Spring_Bean 之间的关系 14:09 // 7. Spring_Bean 的作用域 07:45 // 8. Spring_使用外部属性文件 08:38 // 9. Spring_SpEL 12