2019独角兽企业重金招聘Python工程师标准>>>
面向切面编程算是spring中的高阶应用,常见的日志采集,支付网关功能都有面向切面的工程思想,它就相当于进入地铁站时,那个等待我们的刷卡机一样,所有人乘地铁里必须经过刷卡机,它会验证你卡里的钱够不够,普通用户卡里钱不够不让过,地铁工作人员的员工卡随意过。
面向切面编程时也存在这道门,就是所谓的关注点(pointcut又称切入点,我习惯称之为关注点),类似于上面的刷卡机,有了这关注点,我们就可以围绕这个关注点做一些我们想做的事情,执行一些验证操作,类似于上面的判断用户身份,卡内金额,执行的动作可以放在关注点的某个时机去做,如@Around @Before @After,下面就详细列举一下AOP的配置方式
1.添加aop依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2.添加依赖之后,要开启AOP
@EnableAutoConfiguration
@EnableAspectJAutoProxy
@ComponentScan(basePackages = "org.sun.spring")
/***
*EnableAspectJAutoProxy开启切面编程
*ComponentScan指定包之后,SpringBoot会自动扫描该包下面的功能,如Controller,Model,Aspect功能
*org.sun.spring是我的包名,各位看客自行修改成自己的package name
*/
public class Bootstrap {
public static void main(String[] args) {
SpringApplication.run(new Object[] {Bootstrap.class}, args);
}
}
3.开始写代码进行切面编程
package org.sun.spring.aspect;
import org.apache.log4j.Logger;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class RequestLogAop {
private final Logger logger = Logger.getLogger(getClass());
@Pointcut("execution( * org.sun.spring.controller.*.*(..))")
public void pointCutAt() {
}
@Before("pointCutAt()")
public void beforeAction() {
logger.fatal("在处理请求前,必须经过我!!!");
}
}
上面就是最简洁的AOP案例了,学会使用之后,体会一下整个注解的流程
工程包:https://github.com/Freshman585/spring-boot-example