AOP常用注解
1. 用于开启注解AOP支持
1.1 @EnableAspectJAutoProxy
1.1.1 作用
开启spring对注解aop的支持
1.1.2 属性分析
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(AspectJAutoProxyRegistrar.class)
public @interface EnableAspectJAutoProxy {
boolean proxyTargetClass() default false;
boolean exposeProxy() default false;
}
1.1.3 使用场景
注解驱动开发时需要使用aop实现某些功能时需要用到此注解
1.1.4 示例
@Configuration
@ComponentScan("com.liuchun")
@EnableAspectJAutoProxy
public class SpringConfiguration {
}
2. 用于配置切面
2.1 @Aspect
2.1.1 作用
声明当前类为切面类
2.1.2 属性分析
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Aspect {
public String value() default "";
}
2.1.3 示例
@Component
@Scope("prototype")
@Aspect(value="execution(* com.liuchun.service.impl.*.*(..))")
public class LogUtil {
@Before("execution(* com.liuchun.service.impl.*.*(..))")
public void printLog(){
System.out.println("执行打印日志的功能");
}
}
3. 用于配置切入点表达式
3.1 @Pointcut
3.1.1 作用
指定切入点表达式
3.1.2 使用场景
当多个通知需要执行,同时增强规则确定的情况下,就可以将切入点表达式通用化
此注解代替xml中的<aop:pointcut>,实现切入点表达式通用化
3.1.3 属性分析
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Pointcut {
String value() default "";
String argNames() default "";
}
3.1.4 示例
@Component
@Aspect
public class LogUtil {