Spring的AOP
来源:互联网 发布:java filedialog 编辑:程序博客网 时间:2024/04/28 09:15
AOP,Aspect Oriented Programming,面向切面编程,spring中只能拦截bean的方法,不能拦截类。基本思路是将方法内互不相交的业务逻辑分离并单独开发,最后通过动态代理实现各业务逻辑的组合。
关注点,业务上不可继续分割的最小组件。
关注点分离,将功能模块划分成若干业务上不可继续分割的最小组件。
横切关注点,将功能模块化分成若干最小组件后,辅助组件会以横切的形式与核心组件组合,辅助组件为横切关注点。
植入,横切关注点以横切的形式与关注点组合的过程,根据目标对象生成代理对象的过程。
连接点,jointpoint,被切入的方法。
切入点,pointcut,项目中可能有很多方法需要横切同一个功能,所有这些方法的集合称为切入点。
通知,advice,要切入到连接点的具体内容。
切面,aspect,切入点与通知的组合。
<beans> // ====================xml方式 // 注册通知 <bean id="xxAdvice" class="..XxAdvice" /> // 配置aop <aop:config> // expression用于配置切入点表达式,多个表达式可用and、or、!或&&、||、!连接 // execution(方法表达式)表达式,within(类型表达式),this(类全名),target(类全名) <aop:pointcut id="xxPointcut" expression="execution(* xx.service.impl.*.*(..)) or execution(* xx.service.impl.*.*(..)) or .." /> // 配置切面 <aop:aspect ref="xxAdvice"> // 在拦截方法前执行通知 <aop:before method="doBefore" pointcut-ref="xxPointcut" /> // 在拦截方法后执行通知 <aop:after method="doAfter" pointcut-ref="xxPointcut" /> // 不再执行原方法,直接执行通知,根据需求,通知内可调用原方法 <aop:around method="doAround" pointcut-ref="xxPointcut" /> </aop:aspect> </aop:config> // ====================注解方式 <context:component-scan base-package="..*" /> <aop:aspectj-autoproxy proxy-target-class="true"/></beans>@Component("xxAdvice")public class XxAdvice { // 空方法,只为生成切入点,注解Pointcut配置要拦截或被切入的方法 // 第一个*表示方法的返回类型为任意,xx.service.impl.*表示xx.service.impl包下的任意类 // xx.service.impl..*表示xx.service.impl包及其子包下的任意类,*(..)表示任意方法,方法参数的个数、类型为任意 // *(*, int)表示任意方法,方法的参数为两个,第一个任意类型,第二个int类型 @Pointcut("execution(* xx.service.impl.*.*(..))") private void xxPointcut() {} // 注解配置前置通知 @Before("xxPointcut()") public void doBefore() {} // 注解配置后置通知 @After("xxPointcut()") public void doAfter() {} // 注解配置环绕通知,会阻止原方法,但切面内部可自行执行核心方法 @Around("xxPointcut()") public Object doAround(ProceedingJoinPoint pjp) { Object obj = null; before:原方法执行前切面 原方法:obj = pjp.proceed(); after:原方法执行后切面 // 切记不要忘记返回 return obj; }}
0 0
- AOP、Spring的AOP
- spring(AOP)Aop的概念
- spring的的AOP
- Spring的AOP实现
- spring的AOP介绍
- Spring的aop
- 6.2 Spring的AOP
- Spring 的AOP运用
- spring aop的理解
- spring aop的讲解
- spring的aop原理
- spring的aop
- spring的AOP配置
- Spring AOP的应用
- Spring的AOP
- Spring的AOP配置
- Spring的aop
- Spring Aop的应用
- 1.2米的百岁大龙虾 被食素妹子救了
- windows 安装搭建 Nginx
- 分布式缓存- Spring中Memcache的使用
- Array.prototype.slice.call(arguments)
- 数据库查询优化
- Spring的AOP
- (原创)iOS tableview系统左滑删除 左滑置顶 自定义左滑事件功能 输入框弹出
- 以后可能会经常用到的gulp插件
- json--eval--VM1423:3 Uncaught SyntaxError: Invalid or unexpected token
- RabbitMQ之入门HelloWorld(Java)
- AndroidTrainingCHS -- 高效显示Bitmap
- Java设计模式(2)创建型:工厂模式(工厂方法模式与抽象工厂模式)
- 支付宝支付发挥错误码4000
- C#泛型(二)