标签:bean 单例 动作 对象 模块 模式 service 过程 简单的
Spring程序中实现AOP
1) 使用Spring的API实现AOP,将方面切入Spring管理的bean
2) 使用AspectJ的API实现AOP,将方面切入到任何对象
Spring 框架实现aop使用动态代理的方式实现AOP
设计模式:
单例模型, 工厂模式, 代理(Proxy)模式(Pattern)
代理模式:
1) 切面/方面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象。可创建方面类,用于包含次要业务逻辑。
2) 通知(Advice):在切面的某个特定的连接点上执行的动作,也就是方面包含/要执行的操作。通知有5中类型:
通知执行顺序: 前置通知
3) 连接点(Joinpoint): 在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。在Spring AOP中,一个连接点总是表示一个方法的执行,一个连接点其实就是一个方法。
4) 切入点(Pointcut): 选定要切入方面或通知的连接点叫做切入点,也就是指定要切入通知或方法的方法。
切入点书写模式
execution(modifiers-pattern? return-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)
访问定界符: public, private, protected, default(不写就是default)
execution(访问定界符 方法返回类型 包.类.方法 (参数) 可抛出异常类型)
例如: execution(* com.qdu.dao.*. *(..) )
上例表示com.qdu.dao包下所有类中的所有方法,不管有多个参数,第一个*表示方法返回类型为任何类型
execution关键字 - 匹配方法执行的连接点,这是你会用到的Spring的最主要的切入点指示符。
切入点示例:
? 任意公共方法的执行:
execution(public * *(..))
? 任何一个名字以“set”开始的方法的执行:
execution(* set*(..))
? AccountService接口定义的任意方法的执行:
execution(* com.xyz.service.AccountService.*(..))
? 在service包中定义的任意方法的执行:
execution(* com.xyz.service.*.*(..))
? 在service包或其子包中定义的任意方法的执行:
execution(* com.xyz.service..*.*(..))
5) 目标(Target): 是方面应用到的对象,如 UserDaoImpl的对象
6) 织入(Weaving): 将方面应用到目标对象的过程叫做织入 weave
标签:bean 单例 动作 对象 模块 模式 service 过程 简单的
原文地址:https://www.cnblogs.com/Kai-Jordan/p/8810898.html