SpringBoot中AOP的配置

原创
2016/08/09 16:17
阅读数 7.9K

面向切面编程算是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

展开阅读全文
打赏
1
9 收藏
分享
加载中
@EnableAspectJAutoProxy
原来这个才是关键。。。
2016/12/16 18:23
回复
举报
更多评论
打赏
1 评论
9 收藏
1
分享
返回顶部
顶部