分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

AspectJ注解版和XML版

发布时间:2023-09-06 01:45责任编辑:傅花花关键词:暂无标签

什么是AspectJ?

AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法,所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。

Aspect注解版

AspectJ自动代理

1.在xml文件中配置如下

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" ?xmlns:aop="http://www.springframework.org/schema/aop" ??????xmlns:context="http://www.springframework.org/schema/context" ??????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ??????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 ???????http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> ???<!--目标类型--><bean id="service" class="cn.happy.Aspect01.UserServiceImpl"></bean> ???<!--增强--> ???<bean id="MyAspect" class="cn.happy.Aspect01.UserTest"></bean> ???<!--Aspectj自动代理--> ???<aop:aspectj-autoproxy/></beans>

  

2.创建接口、类

package cn.happy.Aspect01;/** * Created by Administrator on 2018/3/10. */public interface IUserService { ???void select(); ???void update();}

  

package cn.happy.Aspect01;/** * Created by Administrator on 2018/3/10. */public class UserServiceImpl implements IUserService { ???public void select() { ???????System.out.println("select OK!"); ???} ???public void update() { ???????int i=5/0; ???????System.out.println("update OK!"); ???}}

  

UserTest类

package cn.happy.Aspect01;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.*;/** * Created by Administrator on 2018/3/10. */@Aspectpublic class UserTest { ???//前置增强 ???/*@Before("execution(* *..Aspect01.*.select(..))") ???public void MyAspectBefore(){ ???????System.out.println("Before==="); ???}*/ ???//后置增强 ???/*@AfterReturning("execution(* *..Aspect01.*.select(..))") ???public void MyAspectAfter(){ ???????System.out.println("After==="); ???}*/ ???/*//环绕增强 ???@Around("execution(* *..Aspect01.*.select(..))") ???public void MyAround(ProceedingJoinPoint pjp) throws Throwable { ???????System.out.println("环绕增强A"); ???????pjp.proceed(); ???????System.out.println("环绕增强B"); ???}*/ ???/*//异常增强 ???@AfterThrowing("execution(* *..Aspect01.*.update(..))") ???public void MyAfterThrowing(){ ???????System.out.println("网络异常"); ???}*/  //最终增强 ???@After("execution(* *..Aspect01.*.update(..))") ???public void MyAfter(){ ???????System.out.println("最终增强"); ???} ???//PointCut注解 ???@Pointcut(value="execution(* *..Aspect01.*.select(..))") ???public void selects(){} ???@Pointcut(value="execution(* *..Aspect01.*.update(..))") ???public void update(){} ???@AfterReturning("selects()||update()") ???public void MyPointcutAfter(){ ???????System.out.println("After==="); ???}}

  

AspectJ  XML版

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" ?xmlns:aop="http://www.springframework.org/schema/aop" ??????xmlns:context="http://www.springframework.org/schema/context" ??????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ??????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 ???????http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> ???<!--目标类型--><bean id="service" class="cn.happy.Aspect02.IUserServiceImpl"></bean> ???<!--增强--> ???<bean id="MyAspect" class="cn.happy.Aspect02.UserTest"></bean> ??<aop:config> ??????<!--切点--> ??????<aop:pointcut id="MyPointCut" expression="execution(* *..Aspect02.*.select(..))"/> ??????<!--切面Aspect--> ??????<aop:aspect ref="MyAspect"> ??????????<!--前置增强--> ??????????<aop:before method="select" pointcut-ref="MyPointCut"/> ???????????<!--后置增强--> ??????????<aop:after-returning method="After" pointcut-ref="MyPointCut"/> ??????????<!--环绕增强--> ???????????<aop:around method="MyAround" pointcut-ref="MyPointCut"/> ??????????<!--异常增强--> ??????????<aop:after-throwing method="MyThrowing" pointcut-ref="MyPointCut"/> ??????????<!--<!–最终增强–> ??????????<aop:after method="MyAfter" pointcut-ref="MyPointCut"/>--> ??????</aop:aspect> ??</aop:config></beans>

  

AspectJ注解版和XML版

原文地址:https://www.cnblogs.com/xuchangqi1/p/8550954.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved