案例源码下载:https://gitee.com/yangzhenyu322/Spring-aop.git
①:添加配置
xmlns:aop="http://www.springframework.org/schema/aop"
http://www.springframework.org/schema/aop
https://www.springframework.org/schema/aop/spring-aop.xsd
将上面配置添加到beans配置中:
<beans xmlns="http://www.springframework.org/schema/beans"
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
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
https://www.springframework.org/schema/aop/spring-aop.xsd">
②:添加依赖
在pom.xml文件中添加相关依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.3.4</version>
</dependency>
③:开启aop自动代理
在applicationContext-aop.xml中开启aop自动代理:
<aop:aspectj-autoproxy/>
④:扫描包
在applicationContext-aop.xml中添加下面代码进行指定包的扫描,否则无法使用注解:
<context:component-scan base-package="org.csu.spring.demo.aop"/>
⑤:使用注解@Aspect表明某个类是切面
⑥:表明切面中的方式是前置建议还是后置建议使用
前置建议:@Before(value = “execution(* org.csu.spring.demo.aop.persistence..(…))”)
后置建议:@After(value = “execution(* org.csu.spring.demo.aop.persistence..(…))”)
切面类如下:
package org.csu.spring.demo.aop.aspectj;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class DemoAspect {
//execution(访问修饰符,返回值类型,类,方法,参数)
@Before(value = "execution(* org.csu.spring.demo.aop.persistence.*.*(..))")
public void before(){
System.out.println("前置的建议:安全验证...");
}
}
⑦创建切面
在applicationContext-aop.xml中添加下面代码创建切面,才能将切片添加进要切入类的方法中:
<bean id="demoAspect" class="org.csu.spring.demo.aop.aspectj.DemoAspect"/>
//其中org.csu.spring.demo.aop.aspectj.DemoAspect是切面类的完整类名
运行效果如下: