简介:使用OOP编程有一些弊端,当需要为多个不具有继承关系的对象引入一个公共行为时,例如日志、
安全检测时,我们只有在每个对象中引入公共行为,如此产生了大量重复代码。所以AOP改善了这些缺陷
在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut”切入点”。
@Pointcut 注解
Pointcut可以有下列方式来定义或者通过&& || 和!的方式进行组合.
args()
@args()
execution()
this()
target()
@target()
within()
@within()
@annotation()
其中 execution语法为execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)throws-pattern?)
中文为:execution(<修饰符模式>? <返回类型模式> <方法名模式>(<参数模式>) <异常模式>?)
returning type pattern,name pattern, and parameters pattern是必须的.
ret-type-pattern:可以为*表示任何返回值,全路径的类名等.
name-pattern:指定方法名,代表所以,set,代表以set开头的所有方法.
parameters pattern:指定方法参数(声明的类型),(..)代表所有参数,()代表一个参数,(,String)代表第一个参数为任何值,第二个为String类型.