AOP,面向切面编程,可以不修改原来的代码,增加一些通用的、业务无关的逻辑,例如日志记录性能统计等。但一般都是使用spring框架提供的AOP支持和AspectJ,需要先写好切面逻辑,再在业务方法上加上设计好的注解:
/**
* 1.定义注解
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface NILogBefore {
}
@Aspect
public class NILogAnnotationAspect {
/**
* 2.定义切点:在使用NILogBefore注解的地方
*/
@Pointcut("@annotation(com.null01.nonintrusivelog.annotation.NILogBefore)")
private void beforePointCut(){
}
/**
* 3.定义切面:@Before说明要在使用注解前就执行这个方法
*/
@Before("beforePointCut()")
public void before(JoinPoint joinPoint){
//进行日志记录
LogAction.before(joinPoint);
}
}
/**
* 4.切面配置:启用AspectJ自动代理
*/
@Configuration
@EnableAspectJAutoProxy
public class AspectJConfiguration {
@Bean
public NILogAnnotationAspect nILogAnnotat