当前位置: 首页 > news >正文

h5手机模板网站黑马网站建设

h5手机模板网站,黑马网站建设,网易企业邮箱服务器设置怎么填,网站开发人才需求目录 一、Spring AOP底层技术 二、初步实现AOP编程 三、获取切点详细信息 四、 切点表达式语法 五、重用#xff08;提取#xff09;切点表达式 一、Spring AOP底层技术 SpringAop的核心在于动态代理#xff0c;那么在SpringAop的底层的技术是依靠了什么技术呢#x… 目录 一、Spring AOP底层技术 二、初步实现AOP编程 三、获取切点详细信息 四、 切点表达式语法 五、重用提取切点表达式 一、Spring AOP底层技术 SpringAop的核心在于动态代理那么在SpringAop的底层的技术是依靠了什么技术呢 动态代理InvocationHandlerJDK原生的实现方式需要被代理的目标类必须实现接口。因为这个技术要求代理对象和目标对象实现同样的接口兄弟两个拜把子模式。cglib通过继承被代理的目标类实现代理所以不需要目标类实现接口。AspectJ早期的AOP实现的框架SpringAOP借用了AspectJ中的AOP注解。 二、初步实现AOP编程 2.1实现AOP需要以下注解 注解说明SpringJUnitConfig在JUnit测试类中使用Spring测试上下文配置Aspect将类标记为切面类定义切面逻辑和增强方法的位置EnableAspectJAutoProxy开启AspectJ自动代理用于启用Spring AOP的功能 2.2需要导入以下依赖 !-- 切面实现 --dependencygroupIdorg.springframework/groupIdartifactIdspring-aspects/artifactIdversion6.0.6/version /dependency !-- spring核心 --dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.0.2.RELEASE/version/dependency !-- spring-test容器测试 --dependencygroupIdorg.springframework/groupIdartifactIdspring-test/artifactIdversion6.0.6/versionscopetest/scope/dependency 2.3 增强通知注解 注解说明Before在目标方法执行前执行的增强逻辑AfterReturning在目标方法成功返回后执行的增强逻辑AfterThrowing在目标方法抛出异常后执行的增强逻辑After在目标方法执行后执行的增强逻辑Around包裹目标方法在目标方法执行前后都可以执行自定义的增强逻辑 实现增强通知的步骤 定义方法存储增强代码使用注解配置指定插入目标的位置配置切点表达式选中插入的方法切点补全注解加入到ioc容器并且设置切面Aspect开启Aspect注解注释 案例代码 //4.补全注解 Component Aspect//1.创建增强类与增强方法start(),after,Error public class advice {// 2.使用注解配置配置插入位置Before After AfterThrowing // 3.配入切点表达式execution(* com.alphamilk.Impl.*.*(..))表明需要插入的方法为所有com.alhpamilk.Impl包下所有类的所有方法Before(execution(* com.alphamilk.Impl.*.*(..)))public void start(){System.out.println(方法起始处插入);}After(execution(* com.alphamilk.Impl.*.*(..)))public void after(){System.out.println(方法结束后插入);}AfterThrowing(execution(* com.alphamilk.Impl.*.*(..)))public void Error(){System.out.println(方法异常时候插入);} } ComponentScan(value com.alphamilk) Configuration //6.注解类中开启注解注释 EnableAspectJAutoProxy public class JavaConfig { }三、获取切点详细信息 虽然已经初步实现了AOP的实现但是还不够在调用多个方法时候如果都是输入调用方法前调用方法后等等这样并不能区分是调用了哪个方法所以为了区分我们需要获取调用这个方法的相关信息比如参数方法名返回值等等。 具体实现方式 通过JoinPoint接口的下面几个方法获取 方法说明getTarget()获取被代理的目标对象getClass()获取被代理的目标对象的类getSimpleName()获取被代理的目标对象的简单类名不含包名getArgs()获取方法参数数组getSignature()获取方法签名包括方法名、返回类型、参数类型等信息getModifiers()获取方法修饰符 有三个案例分别是一般情况需要返回值情况还有异常情况 一般情况前置通知、后置通知 案例代码 需要在方法调用中参数加入JoinPoint接口实例化对象用以创建对应的动态代理并通过动态代理获取对象相关信息。 public class advice {Before(execution(* com.alphamilk.*.*(..)))public void Before(JoinPoint joinPoint) { // 获取类名String simpleName joinPoint.getTarget().getClass().getSimpleName(); // 获取方法修饰符int modifiers joinPoint.getSignature().getModifiers();String Moidfier Modifier.toString(modifiers); // 获取方法名称String name joinPoint.getSignature().getName(); // 获取参数Object[] args joinPoint.getArgs(); //System.out.println(调用的方法是 name);System.out.println(调用的类是 simpleName);for (Object arg : args) {System.out.println(arg);}System.out.println(调用方法前);}After(execution(* com.alphamilk.*.*(..)))public void After(JoinPoint joinPoint) {System.out.println(调用方法后);} } 有返回值的情况返回通知 在一般情况的前提下还需要多增加Object result参数用以接收返回值.和注解增加returning输入确切的返回对象的名称。 案例代码 public class advice {AfterReturning(value execution(* com.alphamilk.*.*(..)),returning result)public void AfterReturning(JoinPoint joinPoint,Object result) {System.out.println(调用拥有返回值的方法);System.out.println(获取到的返回值为result);} } 异常情况异常通知 异常通知获取异常信息需要在一般情况的前提下在注解中多声明一个注解throwing在方法参数增加一个Throwable对象并且throwing注解对应的值就是Throwable的对象名称。 案例代码 AfterThrowing(value execution(* com.alphamilk.*.*(..)),throwing throwable)public void AfterThrowing(JoinPoint joinPoint,Throwable throwable) {System.out.println(调用有异常的方法);System.out.println(异常对象为throwable.getClass().getName());} SpringJUnitConfig(value JavaConfig.class) public class newaopTest {Autowiredprivate Caculate caculate;Testpublic void Test(){caculate.div(2,0);} } 四、 切点表达式语法 1.切点表达式作用 AOP切点表达式Pointcut Expression是一种用于指定切点的语言它可以通过定义匹配规则来选择需要被切入的目标对象。 2.切点表达式语法 具体值 (String, int)第一个参数是字符串第二个参数是整数。(int, String)第一个参数是整数第二个参数是字符串。()没有参数。 模糊值 (..)任意参数有或者没有。 部分具体和模糊 (String..)第一个参数是字符串后面可能有其他参数。(..String)最后一个参数是字符串前面可能有其他参数。(String..int)字符串开头最后一个参数是整数中间可能有其他参数。(..int..)包含整数类型的参数位置不限可能有其他参数。 具体实战案例 1.查询某包某类下访问修饰符是公有返回值是int的全部方法 execution public int 某包.某类.*(..) 2.查询某包下类中第一个参数是String的方法 execution * 某包.某类.*(String..) 3.查询全部包下无参数的方法 execution * *..*.*( ) 4.查询com包下以int参数类型结尾的方法 execution * com..*.*(..int) 5.查询指定包下Service开头类的私有返回值int的无参数方法 execution private int 指定包.Service*.*() 五、重用提取切点表达式 如果在每一个方法前都加上一个固定的切点表达式那么将会十分麻烦所以下面介绍切点表达式的重用 1.在当前类中提取 特定注解Pointcut 注解描述Pointcut声明切点表达式的方法用于定义切点的匹配规则。 通过定义一个空方法使用Pointcut注解并带上特定的切点表达式 案例代码 Component Aspect public class advice {/*定义空方法空方法上加上注解Pointcut并带上相应的切点表达式在其他增强方法上调用方法*/Pointcut(execution(* com.alphamilk.*.*(..)) )public void blank(){}Before(blank())public void Before(JoinPoint joinPoint) {System.out.println(调用方法前);}After(blank())public void After(JoinPoint joinPoint) {System.out.println(调用方法后);}AfterReturning(value blank(),returning result)public void AfterReturning(JoinPoint joinPoint,Object result) {System.out.println(调用拥有返回值的方法);}AfterThrowing(value blank(),throwing throwable)public void AfterThrowing(JoinPoint joinPoint,Throwable throwable) {System.out.println(调用有异常的方法);} } 2.创建一个存储切点类 推荐通过创建一个单独的存储切点的类更加容易进行维护表达式 使用时候加上特定类的方法名即可 案例 存储切点的类 Component public class MyPointcut {Pointcut(execution(* com.alphamilk.Impl.*.*(..)))public void pointcut1(){} } 对应引用类 Component Aspect public class advice {Before(com.alphamilk.Advice.MyPointcut.pointcut1())public void Before(JoinPoint joinPoint) {System.out.println(调用方法前);}After(com.alphamilk.Advice.MyPointcut.pointcut1())public void After(JoinPoint joinPoint) {System.out.println(调用方法后);}AfterReturning(value com.alphamilk.Advice.MyPointcut.pointcut1(),returning result)public void AfterReturning(JoinPoint joinPoint,Object result) {System.out.println(调用拥有返回值的方法);}AfterThrowing(value com.alphamilk.Advice.MyPointcut.pointcut1(),throwing throwable)public void AfterThrowing(JoinPoint joinPoint,Throwable throwable) {System.out.println(调用有异常的方法);} } 本章总结 1.SpringAop底层技术         了解底层代理技术有jdk 与 cglib 2.初步实现AOP编程         掌握增强注解Before、AfterReturning、AfterThrowing、After、Around         掌握Aspect注解的使用 3.获取切点详细信息         掌握如何通过JoinPoint接口对象获取对应方法的类方法名称参数方法修饰符         掌握三种不同情况下获取对应信息的情况一般情况、返回通知、异常通知 4.切点表达式语法         熟悉切点表达式的格式       execution 权限修饰 方法返回值类型方法所在全类名方法名称参数列表 5.重用提取切点表达式
http://www.zqtcl.cn/news/574395/

相关文章:

  • 网络培训班答案百度seo收录软件
  • 中核工建设集团有限公司网站网站建设管理中se是什么意思
  • 网站如何做关键词引流网站怎么快速做收录
  • 网站建设文案网站设计要学哪些
  • 品牌网站建设gs平台搭建工具
  • 怎么把自己做的网站弄到域名上柳州游戏网站建设
  • 做衣服类网站策划书高端建设网站企业
  • 珠海网站建设公司有哪些代替做网站推广
  • 泰安的网站建设公司旅游网站建设规划报告怎么写
  • 如何建设淘宝客网站什么是网络营销常用的网络营销方法有哪些
  • 大连华南网站建设深圳网站建设公司的外文名是
  • 做招投标网站云南昆明网站建设价格
  • 越秀区网站建设公司微网站菜单
  • vs2017网站开发广州网站建设易得
  • 长沙企业网站建设价格陕西省门户网站建设政策
  • 龙华营销型网站制作wordpress最近评论
  • 嘉兴微信网站做一个招聘信息的网站_用什么做网站的软件
  • 各种购物网站大全上海市建设工程检测网
  • 网站推广沈阳php网站开发接口开发
  • 莱芜 做网站 公司官网开发
  • tomcat做网站做自媒体查找素材的网站
  • 信阳建设企业网站公司软件开发平台公司
  • 营销型网站建设营销型设计家官网视频
  • 部门网站建设目的加猛挣钱免费做网站软件
  • 洛阳制作网站哪家好wordpress是英文
  • dw里面怎么做网站轮播图网站建设分为多少模块
  • 国外互动网站wordpress设置用户头像
  • 重庆手机网站推广定做net创建网站之后怎么做
  • 网站仿静态做it的兼职网站
  • 建站用wordpress好吗hui怎么做网站