☰
Spring AOP—基于注解的AOP实现(IDEA2026+JDK17)
2026/9/25 17:57:50 网站建设 项目流程

0.环境

IDEA2026.1

JDK17

spring: 5.3.20

1.创建项目

打开IDEA ,点击文件—>新建—>项目

然后,下面选择”Java“,名称为:SpringAOPAnnotation,构建系统选:Maven,JDK版本选17。
最后点击”创建“。

创建完后,项目结构如下:

然后,我们给项目创建项目结构。
右击main下面的java文件夹,然后选择”新建“,再点击”软件包 “

软件包命参考如下:com.guo.aop,可以根据实际情况修改包名。
在这里插入图片描述

创建完后,项目结构如下:

2.引入依赖

打开pom.xml文件,引入下面的依赖文件(把dependencies全部内容放进去)

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="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.0</modelVersion><groupId>com.demo</groupId><artifactId>SpringAOPXml</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- spring-core的依赖包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.3.20</version></dependency><!-- spring-beans的依赖包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.3.20</version></dependency><!-- spring-context的依赖包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.20</version></dependency><!-- spring-expression的依赖包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>5.3.20</version></dependency><!-- commons-logging的依赖包 --><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.3.20</version></dependency><!-- aspectjrt包的依赖 --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.9.7</version></dependency><!-- aspectjweaver包的依赖 --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.7</version></dependency></dependencies></project>

一开始,引入报错是正常的,因为还没有下载下依赖,我们有两种方式。
方式1:直接点击右上角的刷新。
方法2:先点击右侧的maven插件,再点击上面的两个刷新。
注意:你先要配置正确maven环境,这里才能正常下载下来的依赖。

3.创建Dao文件

xxxDao是接口文件(也可以使用包来包裹这个文件)

右击aop文件夹,选择”新建“,然后选择”Java类 “。


这个地方的类型要选:接口
接口名为:UserDao


参考代码:

packagecom.guo.aop;publicinterfaceUserDao{publicvoidinsert();publicvoiddelete();publicvoidupdate();publicvoidselect();}

4.创建Impl文件

xxxImpl文件是xxxDao具体实现类,这里面要写具体的业务代码。

右击aop文件夹,选择”新建“,再选择“Java类”

这里的选择的类型是:类
类名为:UserDaoImpl

参考代码:

package com.guo.aop; public class UserDaoImpl implements UserDao{ public void insert() { System.out.println("添加用户信息"); } public void delete() { System.out.println("删除用户信息"); } public void update() { System.out.println("更新用户信息"); } public void select() { System.out.println("查询用户信息"); } }

创建后,项目结构如下:

5.创建切面类

这个就是需要切进去的代码。

右击aop文件夹,选择“新建”,然后点击“Java类”

类名为:AnnoAdvice

参考代码如下:

packagecom.guo.aop;importorg.aspectj.lang.JoinPoint;importorg.aspectj.lang.ProceedingJoinPoint;importorg.aspectj.lang.annotation.*;@AspectpublicclassAnnoAdvice{//切点@Pointcut("execution( * com.guo.aop.UserDaoImpl.*(..))")publicvoidpoincut(){}//前置通知@Before("poincut()")publicvoidbefore(JoinPointjoinPoint){System.out.print("这是前置通知!");System.out.print("目标类是:"+joinPoint.getTarget());System.out.println(",被织入增强处理的目标方法为:"+joinPoint.getSignature().getName());}//返回通知@AfterReturning("poincut()")publicvoidafterReturning(JoinPointjoinPoint){System.out.print("这是返回通知!");System.out.println("被织入增强处理的目标方法为:"+joinPoint.getSignature().getName());}//环绕通知@Around("poincut()")publicObjectaround(ProceedingJoinPointpoint)throwsThrowable{System.out.println("这是环绕通知之前的部分!");//调用目标方法Objectobject=point.proceed();System.out.println("这是环绕通知之后的部分!");returnobject;}//异常通知@AfterThrowing("poincut()")publicvoidafterException(){System.out.println("异常通知");}//后置通知@After("poincut()")publicvoidafter(){System.out.println("这是后置通知!");}}

创建完后,项目结构如下:

6.编写配置文件

右击resourtces文件夹,选择“新建”,然后,点击“文件”。

配置文件的名称为:applicationContext-Anno.xml

参考代码如下:

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"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/aop http://www.springframework.org/schema/aop/spring-aop.xsd"><!-- 注册Bean --><beanname="userDao"class="com.guo.aop.UserDaoImpl"/><beanname="AnnoAdvice"class="com.guo.aop.AnnoAdvice"/><!-- 开启@aspectj的自动代理支持 --><aop:aspectj-autoproxy/></beans>

创建完后,下面是项目结构:

7.编写测试类

测试代码可以放到测试类中,这里为了方便,暂时放到main函数中,我们创建main函数。
右击aop,点击“新建”,在点击“Java类”

类名为:AnnotationTest

参考代码如下:

packagecom.guo.aop;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassAnnotationTest{publicstaticvoidmain(String[]args){ApplicationContextcontext=newClassPathXmlApplicationContext("applicationContext-Anno.xml");UserDaouserDao=context.getBean("userDao",UserDao.class);userDao.delete();System.out.println();userDao.insert();System.out.println();userDao.select();System.out.println();userDao.update();}}

8.测试

点击,运行,查看运行结果:

本文代码下载:

1.百度网盘:
通过网盘分享的文件:SpringAOPAnnotation.zip
链接: https://pan.baidu.com/s/1TbhL159fZlBoBDYJXKn9HQ?pwd=ngj4 提取码: ngj4

2.夸克网盘
我用夸克网盘给你分享了「SpringAOPAnnotation.zip」,点击链接或复制整段内容,打开「夸克APP」即可获取。
/e6f53b4gDQ😕
链接:https://pan.quark.cn/s/f39df10753fa?pwd=2YFM
提取码:2YFM

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询