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

专业网站制作解决方案做网站运营有前景么

专业网站制作解决方案,做网站运营有前景么,网站建设制作设计公司,google 网站收录目录 1. 以增加方法执行时间为例使用AOP 1.1 引入AOP依赖 1.2 编写AOP程序 2. AOP的重要概念 3. AOP通知类型与通知方法标注 3.1 在通知方法前使用对应注解 3.2 使用Pointcut注解提取公共切点表达式 3.3 跨类使用切点 3.4 切面类排序 1. 以增加方法执行时间为例使用AO…目录 1. 以增加方法执行时间为例使用AOP 1.1 引入AOP依赖 1.2 编写AOP程序 2. AOP的重要概念 3. AOP通知类型与通知方法标注 3.1 在通知方法前使用对应注解 3.2 使用Pointcut注解提取公共切点表达式 3.3 跨类使用切点 3.4 切面类排序 1. 以增加方法执行时间为例使用AOP 1.1 引入AOP依赖 在pom.xml中增加关于AOP的配置 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId/dependency 1.2 编写AOP程序 以图书管理系统为例为每个方法增加耗时计算与日志打印。 创建aspect包在其下创建TimeAspect类 package com.example.bookmanagementsystem.aspect;import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component;Aspect Slf4j Component public class TimeAspect {Around(execution(* com.example.bookmanagementsystem.controller.*.*(..)))public Object timeCost(ProceedingJoinPoint joinPoint) throws Throwable {long startSystem.currentTimeMillis();// 执行目标方法Object resultjoinPoint.proceed();long endSystem.currentTimeMillis();log.info(joinPoint消耗时间(end-start)ms);return result;} }关于注解 1、Aspect表示该类是一个切面类 2、Around用于指明切面类的作用域与作用方式在哪个环节对哪些方法 关于切面类成员方法 1、timeCost方法的参数是一个ProceedingJoinPoint类型的对象表示目标方法 2、代码被分为三大部分 2. AOP的重要概念 1、切点一组通过表达式描述的规则 2、连接点切面作用/描述的方法即被AOP控制的目标方法 3、通知具体要做处理的逻辑 4、切面切点通知即切面一个类可以有多个切面 以上述切面类为例 3. AOP通知类型与通知方法标注 1、Around环绕通知此注解标注的通知方法在目标方法前、后都被执行最常用 2、Before前置通知此注解标注的通知方法在目标方法前被执行 3、After 后置通知此注解标注的通知方法在目标方法后被执行无论是否发生异常都会执行 4、AfterReturning 返回后通知此注解标注的通知方法在目标方法后被执行有异常不会执行 5、AfterThrowing异常后通知此注解标注的通知方法在异常后被执行 3.1 在通知方法前使用对应注解 现在controller包下创建一个HelloController类编写方法作为目标方法 由于AfterReturning与AfterThrowing标注的方法在异常发生与否时返回不同故编写两个方法使其满足一个正常运行一个运行时报异常 package com.zhouyou.demos.controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController public class HelloController {RequestMapping(/test1)public String test1(){return hello;}RequestMapping(/test2)public int test2(){return 10/0;} }在aspect包下创建TestAspect类用于编写通知方法 package com.zhouyou.demos.aspect;import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.springframework.stereotype.Component;Aspect Slf4j Component public class AspectDemo {Around(execution(* com.zhouyou.demos.controller.*.*(..)))public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {log.info(AspectDemo around 前);Object resultjoinPoint.proceed();log.info(AspectDemo around 后);return result;}Before(execution(* com.zhouyou.demos.controller.*.*(..)))public void doBefore(){log.info(AspectDemo before);}After(execution(* com.zhouyou.demos.controller.*.*(..)))public void doAfter(){log.info(AspectDemo after);}AfterReturning(execution(* com.zhouyou.demos.controller.*.*(..)))public void doAfterReturning(){log.info(AspectDemo afterReturning);}AfterThrowing(execution(* com.zhouyou.demos.controller.*.*(..)))public void doAfterThrowing(){log.info(AspectDemo afterThrowing);} }启动项目依次根据路由映射访问test1方法和test2方法可查看日志观察通知方法执行顺序 3.2 使用Pointcut注解提取公共切点表达式 上述使用方法中在使用对应注解标注通知方法时需要重复编写公共切点表达式这很不方便 可使用Pointcut提取公共切点表达式在后续使用公共切点表达式时则直接使用Pointcut标注的方法名即可 修改3.1中的代码 package com.zhouyou.demos.aspect;import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.springframework.stereotype.Component;Aspect Slf4j Component public class AspectDemo {Pointcut(execution(* com.zhouyou.demos.controller.*.*(..)))private void pc(){}Around(pc())public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {log.info(AspectDemo around 前);Object resultjoinPoint.proceed();log.info(AspectDemo around 后);return result;}Before(pc())public void doBefore(){log.info(AspectDemo before);}After(pc())public void doAfter(){log.info(AspectDemo after);}AfterReturning(pc())public void doAfterReturning(){log.info(AspectDemo afterReturning);}AfterThrowing(pc())public void doAfterThrowing(){log.info(AspectDemo afterThrowing);} }3.3 跨类使用切点 现在aspect包中再创建一个切面类aspectDemo2以Before为例使用aspectDemo的切点。 package com.zhouyou.demos.aspect;import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component;Aspect Slf4j Component public class AspectDemo2 {Before(com.zhouyou.demos.aspect.AspectDemo.pc())public void doBefore(){log.info(AspectDemo2 doBefore);} } 启动项目根据方法路由映射即可在日志处观察到通知方法的具体执行顺序情况 使用方法注意事项 1在跨类使用公共切点时需要使用全限定类名 2在当前类中若在其类中实现的切点需要在其他类中使用则切点必须以public修饰。 使用private修饰的切点只能在当前类中使用 3.4 切面类排序 现aspect包下由AspectDemo、AspectDemo1、AspectDemo2三个切面类并在每个切面类中实现Before通知和After通知。 创建目标方法并指定路由映射并进行访问查看日志输出 在采取默认排序的情况下默认采取按照切面类的类名字母排序 对于Before通知排名越靠前的先执行 对于After通知排名越靠后的先执行 但这并不便于管理Spring提供了Order注解用于给切面类设置优先级 对于Before通知Order中的数字越小越先执行 对于After通知Order中的数字越大越先执行 现对AspectDemo切面类使用Order(3)、AspectDemo1切面类使用Order(2)、AspectDemo2切面类使用Order(1)启动程序查看日志输出
http://www.pierceye.com/news/270755/

相关文章:

  • 大连企业网站网站rar文件
  • 揭阳东莞网站建设手机网站分享代码
  • 网站设计风格分析wordpress 用户介绍
  • 中国教育网站官网wordpress 自定义循环
  • 中国婚恋网站排名苏州网站建设设计公司哪家好
  • 微软雅黑做网站是否侵权杭州标志设计公司
  • 个人网站如何制作教程网站通栏广告设计
  • 网站建设与维护要求wordpress 常数函数
  • 网站开发u盘128够吗手机网站开发学习
  • 襄阳营销型网站国内最新保理公司排名
  • 网站开发系统学习网站需要续费吗
  • 问答网站如何优化wordpress简约电影
  • 公司做网站 手机 电脑wordpress图片批量修改
  • 电子商务网站怎么做建筑安全员考试成绩查询官网
  • 定制制作网站价格表网站设计步骤大全
  • 泉州网站建设制作北京企业网络推广方案
  • wordpress网站模板怎么用新闻类网站开发
  • 怎么换自己的网站服务器手机应用软件开发培训班
  • 大学生网站开发目的建盏厂家
  • 开业时网站可以做哪些活动吗虚拟机安装 wordpress
  • 可以进行网站外链建设的有wordpress 添加顶部公告
  • 电子商务网站建设臧良运课后答案没有网站怎么做链接视频
  • vps搭建网站教程怎么通过互联网做一个服务的网站
  • 建设网站需要从哪方面考虑微信云开发
  • 做环评工作的常用网站大学两学一做专题网站
  • 网站设计的公司如何选seo 优化教程
  • 济南网站中企动力河南网站建设服务
  • 网站建设的定位是什么意思php网站开发实例视频
  • 做资讯类网站需要特殊资质吗宜昌网站排名优化
  • 百度怎么建立自己的网站科技公司网站设计公司