本文简单写一下通过注解的方式实现spring aop
Aop 简介
Aop(Aspect-Oriented Programming,面向切面编程):是一种新的方法论,是对传统OOP(Object-Oriented Programming,面向对象编程)的补充。
Aop 的优势
- 每个事物逻辑位于一个位置,代码不分散,便于维护和升级。
- 业务模块简介,只包含核心业务代码。
Aop 术语
- 切面(Aspect) :横切关注点(跨应用程序多个模块功能),被模块化的特殊对象。
- 通知(Advice):切面必须要完成的工作。
- 目标(Target):被通知的对象。
- 代理(Proxy):向目标对象应用通知后创建的代理对象。
- 连接点(Jion Point):程序执行的某个特定的位置。如一个类的某个方法调用前、调用后、方法抛出异常等;
- 切点(Point Cut):每个类都有多个连接点,例如Math的所有方法都是连接点,既连接点事程序类中的客观存在的事务。AOP通过切点定位到特定的连接点。类比:连接点相当于数据库中的记录,切点相当于查询条件。切点通过 org.springframework.app.Piontcut 接口进行描述,它使用类和方法作为连接点的查询条件。
用 AspectJ 注解声明切面
要在 spring 中声明 AspectJ 切面,只需要在 IOC容器中将切面声明为 Bean 实例。当在 Spring IOC 容器中初始化 AspectJ 切面之后,Spring IOC 容器就会为那些与 AspectJ 切面想匹配的 Bean 创建代理。切面声明只需要在类上加 @AspectJ注解。
AspectJ 支持的五种通知类型:
- @Before :前置通知,在方法执行之前执行。
- @After :后置通知,在方法执行之后执行。
- @AfterReturning :返回通知,在方法返回结果之后执行。
- @AfterThrowing :异常通知,在方法发生异常后执行。
- @Around :环绕通知,围绕方法执行。可以实现前面四种通知的集合。
附代码:
maven中pom配置:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.2.5.RELEASE</spring.version>
<jackson.version>2.5</jackson.version>
<jdk.version