ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Spring AOP—基于注解的AOP实现(IDEA2026+JDK17)

Spring AOP—基于注解的AOP实现(IDEA2026+JDK17) 0.环境IDEA2026.1JDK17spring: 5.3.201.创建项目打开IDEA 点击文件—新建—项目然后下面选择”Java“名称为SpringAOPAnnotation构建系统选MavenJDK版本选17。最后点击”创建“。创建完后项目结构如下然后我们给项目创建项目结构。右击main下面的java文件夹然后选择”新建“再点击”软件包 “软件包命参考如下com.guo.aop可以根据实际情况修改包名。在这里插入图片描述创建完后项目结构如下2.引入依赖打开pom.xml文件引入下面的依赖文件把dependencies全部内容放进去?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.demo/groupIdartifactIdSpringAOPXml/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependencies!-- spring-core的依赖包 --dependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactIdversion5.3.20/version/dependency!-- spring-beans的依赖包 --dependencygroupIdorg.springframework/groupIdartifactIdspring-beans/artifactIdversion5.3.20/version/dependency!-- spring-context的依赖包 --dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.3.20/version/dependency!-- spring-expression的依赖包 --dependencygroupIdorg.springframework/groupIdartifactIdspring-expression/artifactIdversion5.3.20/version/dependency!-- commons-logging的依赖包 --dependencygroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactIdversion1.2/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-aop/artifactIdversion5.3.20/version/dependency!-- aspectjrt包的依赖 --dependencygroupIdorg.aspectj/groupIdartifactIdaspectjrt/artifactIdversion1.9.7/version/dependency!-- aspectjweaver包的依赖 --dependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactIdversion1.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(这是环绕通知之前的部分);//调用目标方法Objectobjectpoint.proceed();System.out.println(这是环绕通知之后的部分);returnobject;}//异常通知AfterThrowing(poincut())publicvoidafterException(){System.out.println(异常通知);}//后置通知After(poincut())publicvoidafter(){System.out.println(这是后置通知);}}创建完后项目结构如下6.编写配置文件右击resourtces文件夹选择“新建”然后点击“文件”。配置文件的名称为applicationContext-Anno.xml参考代码如下?xml version1.0 encodingUTF-8?beansxmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:aophttp://www.springframework.org/schema/aopxsi:schemaLocationhttp://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 --beannameuserDaoclasscom.guo.aop.UserDaoImpl/beannameAnnoAdviceclasscom.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){ApplicationContextcontextnewClassPathXmlApplicationContext(applicationContext-Anno.xml);UserDaouserDaocontext.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?pwdngj4 提取码: ngj42.夸克网盘我用夸克网盘给你分享了「SpringAOPAnnotation.zip」点击链接或复制整段内容打开「夸克APP」即可获取。/e6f53b4gDQ链接https://pan.quark.cn/s/f39df10753fa?pwd2YFM提取码2YFM
返回列表