一、主要内容
1、注解前置、后置通知2、注解环绕通知
3、标注引入
二、注解前置、后置通知
1、AspectJ5之前,编写AspectJ切面需要学习一种Java语言的扩展—AspectJ2、AspectJ面向注解的模型可通过少量注解把任意类转变为切面,该新特性称为@AspectJ
3、@AspectJ注解和<aop:aspect>元素都是把一个POJO转变成一个切面
在Spring里面,切面也是一个Bean。也是在Spring的上下文里面进行管理
4、@Aspect注解标识了该类不仅是一个POJO,还是一个切面
5、@Pointcut注解定义一个可以在@AspectJ切面内重用的切入点,切入点的名称就是注解所应用的方法名称,该方法本身只是一个标识,供@Pointcut注解依附
6、最后要让Spring将该类应用为一个切面。Spring在aop命名空间中提供了一个自定义的配置元素<aop:aspectj-autoproxy/>
配置后Spring在启动时会去查找@Aspect配置的类,和@Pointcut等等注解配置的内容
7、<aop:aspectj-autoproxy/>在Spring上下文中创建一个AnnotationAwareAspectJAutoProxyCreator类,它会自动代理一些Bean,这些Bean的方法要与使用@Aspect注解的Bean中定义的切入点相匹配,这些切入点被@Pointcut注解定义
白话:就是会代理切入点定义的方法,方法调用时被拦截
8、为了使用<aop:aspectj-autoproxy/>配置元素,要在Spring配置文件中包含aop命名空间
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
"> <!-- 引入aop空间 -->
<aop:aspectj-autoproxy/>
</beans>
三、注解环绕通知
1、使用@Around注解创建环绕通知四、标注引入
1、等价于<aop:declare-parents>的注解是@AspectJ的@DeclareParents2、@DeclareParents注解由三部分组成:
1)value属性:等同于<aop:declare-parents>的types-matching属性,标识应该被引入制定接口的Bean类型
2)defaultImpl属性:等同于<aop:declare-parents>的default-impl属性,标识该类提供了所引入接口的实现
3)由@DeclareParents注解所标注的static属性指定了将被引入的接口