ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Spring AOP—基于注解的AOP实现

2026/9/27 9:32:16 拓冰建站 浏览量
Spring AOP—基于注解的AOP实现 本文工具IDEA2020.1maven3.6.3本文源代码如下1百度网盘通过网盘分享的文件Spring AOP—基于注解的AOP实现.zip链接: https://pan.baidu.com/s/1SoXPzI__RafafuOCMegD_Q?pwd4smh 提取码: 4smh2夸克网盘我用夸克网盘给你分享了「Spring AOP—基于注解的AOP实现.zip」点击链接或复制整段内容打开「夸克APP」即可获取。/52503b6fC6链接https://pan.quark.cn/s/8234781ccb7a?pwdxRsm提取码xRsm一、注解说明二、创建maven项目打开IDEA点击“File—New—Project”我们 选择“Maven”项目然后点击“Next”改一下项目名称然后点击“Finish”看这里就命名为chapter08三、引入依赖打开项目的pom.xml文件引入依赖后整个pom文件参考如下?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/modelVersiongroupIdorg.example/groupIdartifactIdchapter08/artifactIdversion1.0-SNAPSHOT/versiondependencies!-- spring-core的依赖包 --dependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactIdversion5.2.8.RELEASE/version/dependency!-- spring-beans的依赖包 --dependencygroupIdorg.springframework/groupIdartifactIdspring-beans/artifactIdversion5.2.8.RELEASE/version/dependency!-- spring-context的依赖包 --dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.2.8.RELEASE/version/dependency!-- spring-expression的依赖包 --dependencygroupIdorg.springframework/groupIdartifactIdspring-expression/artifactIdversion5.2.8.RELEASE/version/dependency!-- commons-logging的依赖包 --dependencygroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactIdversion1.2/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-aop/artifactIdversion5.2.8.RELEASE/version/dependency!-- aspectjrt包的依赖 --dependencygroupIdorg.aspectj/groupIdartifactIdaspectjrt/artifactIdversion1.9.1/version/dependency!-- aspectjweaver包的依赖 --dependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactIdversion1.9.6/version/dependency/dependencies/project注如果依赖爆红请仔细检查maven配置。注如果依赖爆红请仔细检查maven配置。四、创建Dao层和Impl层我们右击 java文件夹选择New—package文件夹的名字就叫demo4右击刚刚创建的demo4文件夹选择New—Java Class这个接口名称为 UserDao类型选择Interface那么UserDao的代码参考如下packagedemo3;publicinterfaceUserDao{publicvoidinsert();publicvoiddelete();publicvoidupdate();publicvoidselect();}继续创建UserDao的实现层右击demo3选择New——Java Class名称叫UserDaoImpl代码参考如下packagedemo3;publicclassUserDaoImplimplementsUserDao{publicvoidinsert(){System.out.println(添加用户信息);}publicvoiddelete(){System.out.println(删除用户信息);}publicvoidupdate(){System.out.println(更新用户信息);}publicvoidselect(){System.out.println(查询用户信息);}}五、创建切面类在demo4文件夹下继续创建一个切面类名称为AnnoAdvice代码参考如下packagedemo4;importorg.aspectj.lang.JoinPoint;importorg.aspectj.lang.ProceedingJoinPoint;importorg.aspectj.lang.annotation.*;AspectpublicclassAnnoAdvice{//切点Pointcut(execution( * demo4.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(这是后置通知);}}六、编写配置文件右击 resources文件夹选择New—File文件名称为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 --beannameuserDaoclassdemo4.UserDaoImpl/beannameAnnoAdviceclassdemo4.AnnoAdvice/!-- 开启aspectj的自动代理支持 --aop:aspectj-autoproxy//beans七、编写测试类继续右击demo4选择New—Java Class类名为TestAnnotation代码参考如下packagedemo4;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestAnnotation{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();}}九、测试效果运行测试类执行效果如下