AOP在spring中的实现有两种方式:
一种是基于xml配置文件的方式(前面一篇博客中已经进行了编码,博客地址:Spring的前置增强,后置增强,异常抛出增强、自定义增强_网恋褙骗八万的博客-CSDN博客)
另一种方式是基于注解的方式(在此只编码了前置增强,其余增强类似)
目录结构:

目录
4、创建spring配置xml文件bean1.xml,在配置文件中开启注解扫描,以及开始Aspect生成代理对象
创建 User类(被增强类)、UserProxy类(增强类)
- package com.atguigu.aopanno;
-
- import org.springframework.stereotype.Component;
-
- /**
- * @Author 不要有情绪的 ljy
- * @Date 2022/9/19 15:30
- * @Description:
- */
- //被增强类
- @Component
- public class User {
- public void add() {
- System.out.println("add方法执行......");
- }
- }
- package com.atguigu.aopanno;
-
- import org.aspectj.lang.annotation.Aspect;
- import org.aspectj.lang.annotation.Before;
- import org.springframework.stereotype.Component;
-
- /**
- * @Author 不要有情绪的 ljy
- * @Date 2022/9/19 15:31
- * @Description:
- */
- //增强类
- @Component
- @Aspect
- public class UserProxy {
- //前置通知
- @Before(value = "execution(* com.atguigu.aopanno.User.add(..))")
- public void before() {
- System.out.println("before方法执行......");
- }
- }
-
- "1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0modelVersion>
-
- <groupId>com.examplegroupId>
- <artifactId>learnForSpring5_demo4artifactId>
- <version>1.0-SNAPSHOTversion>
-
- <dependencies>
- <dependency>
- <groupId>org.aspectjgroupId>
- <artifactId>aspectjweaverartifactId>
- <version>1.6.8version>
- dependency>
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-contextartifactId>
- <version>5.3.22version>
- dependency>
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-aopartifactId>
- <version>5.3.22version>
- dependency>
- <dependency>
- <groupId>junitgroupId>
- <artifactId>junitartifactId>
- <version>4.12version>
- <scope>compilescope>
- dependency>
- dependencies>
-
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.pluginsgroupId>
- <artifactId>maven-compiler-pluginartifactId>
- <version>3.1version>
- <configuration>
- <source>1.8source>
- <target>1.8target>
- configuration>
- plugin>
- plugins>
- build>
-
-
- project>
注解已经在类编写中进行了添加(1中)
- "1.0" encoding="UTF-8"?>
- <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 http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
-
-
- <context:component-scan base-package="com.atguigu.aopanno">context:component-scan>
-
-
- <aop:aspectj-autoproxy>aop:aspectj-autoproxy>
-
-
- beans>
- package com.atguigu.test;
-
- import com.atguigu.aopanno.User;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
-
- /**
- * @Author 不要有情绪的 ljy
- * @Date 2022/9/19 16:03
- * @Description:
- */
- public class AopTest {
-
- @Test
- public void test(){
- ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
- User user = context.getBean("user", User.class);
- user.add();
- }
-
- }
- "C:\Program Files\Java\jdk1.8.0_341\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:E:\idea\IntelliJ IDEA 2020.2.4\lib\idea_rt.jar=64291:E:\idea\IntelliJ IDEA 2020.2.4\bin" -Dfile.encoding=UTF-8 -classpath "E:\idea\IntelliJ IDEA 2020.2.4\lib\idea_rt.jar;E:\idea\IntelliJ IDEA 2020.2.4\plugins\junit\lib\junit5-rt.jar;E:\idea\IntelliJ IDEA 2020.2.4\plugins\junit\lib\junit-rt.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_341\jre\lib\rt.jar;D:\ajavaproject\coding\learnForSpring5_demo4\target\classes;C:\Users\qrs-ljy\.m2\repository\junit\junit\4.12\junit-4.12.jar;C:\Users\qrs-ljy\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Users\qrs-ljy\.m2\repository\org\aspectj\aspectjweaver\1.6.8\aspectjweaver-1.6.8.jar;C:\Users\qrs-ljy\.m2\repository\org\springframework\spring-context\5.3.22\spring-context-5.3.22.jar;C:\Users\qrs-ljy\.m2\repository\org\springframework\spring-beans\5.3.22\spring-beans-5.3.22.jar;C:\Users\qrs-ljy\.m2\repository\org\springframework\spring-core\5.3.22\spring-core-5.3.22.jar;C:\Users\qrs-ljy\.m2\repository\org\springframework\spring-jcl\5.3.22\spring-jcl-5.3.22.jar;C:\Users\qrs-ljy\.m2\repository\org\springframework\spring-expression\5.3.22\spring-expression-5.3.22.jar;C:\Users\qrs-ljy\.m2\repository\org\springframework\spring-aop\5.3.22\spring-aop-5.3.22.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 com.atguigu.test.AopTest,test
- before方法执行......
- add方法执行......
-
- Process finished with exit code 0
学习之所以会想睡觉,是因为那是梦开始的地方。
ଘ(੭ˊᵕˋ)੭ (开心) ଘ(੭ˊᵕˋ)੭ (开心)ଘ(੭ˊᵕˋ)੭ (开心)ଘ(੭ˊᵕˋ)੭ (开心)ଘ(੭ˊᵕˋ)੭ (开心)
------不写代码不会凸的小刘