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

手机报价网哈尔滨seo优化代理

手机报价网,哈尔滨seo优化代理,鞍山网站建设找金航,app拉新推广代理一、为什么需要面向切面编程#xff1f; 面向对象编程#xff08;OOP#xff09;的好处是显而易见的#xff0c;缺点也同样明显。当需要为多个不具有继承关系的对象添加一个公共的方法的时候#xff0c;例如日志记录、性能监控等#xff0c;如果采用面向对象编程的方法 面向对象编程OOP的好处是显而易见的缺点也同样明显。当需要为多个不具有继承关系的对象添加一个公共的方法的时候例如日志记录、性能监控等如果采用面向对象编程的方法需要在每个对象里面都添加相同的方法这样就产生了较大的重复工作量和大量的重复代码不利于维护。面向切面编程AOP是面向对象编程的补充简单来说就是统一处理某一“切面”的问题的编程思想。如果使用AOP的方式进行日志的记录和处理所有的日志代码都集中于一处不需要再每个方法里面都去添加极大减少了重复代码。 二、Spring AOP术语 通知Advice包含了需要用于多个应用对象的横切行为就是定义了“什么时候”和“做什么”。 连接点Join Point是程序执行过程中能够应用通知的所有点。 切点Poincut是定义了在“什么地方”进行切入哪些连接点会得到通知。显然切点一定是连接点。 切面Aspect是通知和切点的结合。通知和切点共同定义了切面的全部内容——是什么何时何地完成功能。 引入Introduction允许我们向现有的类中添加新方法或者属性。 织入Weaving是把切面应用到目标对象并创建新的代理对象的过程分为编译期织入、类加载期织入和运行期织入。 三、Spring Boot AOP实战 1、引入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactIdversion2.7.2/version /dependency 不需要再添加aspectjweaver的依赖了因为spring-boot-starter-aop包含了aspectjweaver 2、 编写用于拦截的bean 直接定义一个controller RestController public class AopController {GetMapping(/hello)public ResultMap sayHello(){ResultMap resultMap new ResultMap();resultMap.setCode(1);resultMap.setMessage(响应成功);resultMap.setData(Hello World!);return resultMap;} } 3、 定义切面 Spring采用Aspect注解对POJO进行标注该注解表明该类不仅仅是一个POJO还是一个切面。切面是切点和通知的结合那么定义一个切面就需要编写切点和通知。在代码中只需要添加Aspect注解即可。 1定义切点 切点是通过Pointcut注解和切点表达式定义的。由于Spring切面粒度最小是达到方法级别而execution表达式可以用于明确指定方法返回类型类名方法名和参数名等与方法相关的部件并且实际中大部分需要使用AOP的业务场景也只需要达到方法级别即可因而execution表达式的使用是最为广泛的。如图是execution表达式的语法 execution表示在方法执行的时候触发。以“*”开头表明方法返回值类型为任意类型。然后是全限定的类名和方法名“*”可以表示任意类和任意方法。对于方法参数列表可以使用“..”表示参数为任意类型。如果需要多个表达式可以使用“”、“||”和“!”完成与、或、非的操作。 2定义通知 通知有五种类型分别是 前置通知Before在目标方法调用之前调用通知 后置通知After在目标方法完成之后调用通知 环绕通知Around在被通知的方法调用之前和调用之后执行自定义的方法 返回通知AfterReturning在目标方法成功执行之后调用通知 异常通知AfterThrowing在目标方法抛出异常之后调用通知 Aspect Component public class AopAdvice {Pointcut(execution(* com.mq.rabbit.controller.*.*(..)))public void pointCut(){}Before(pointCut())public void beforeAdvice(){System.out.println(\t------前置通知------);}After(pointCut())public void afterAdvice(){System.out.println(\t------后置通知------);}Around(pointCut())public Object aroundAdvice(ProceedingJoinPoint joinPoint) {System.out.println(------环绕通知开始------);Object result null;try {result joinPoint.proceed(); //接收Controller的返回值}catch (Throwable t){t.printStackTrace();}System.out.println(------环绕通知结束------);return result; //将Controller方法的返回值返回} } 4、启动测试 运行项目在浏览器访问http://localhost:端口号/项目名/hello控制台输出如图所示
http://www.sczhlp.com/news/165849/

相关文章:

  • 加氢站个公司好国外物流公司网站模板
  • 四川做网站设计哪家好免费logo设计图片软件
  • 物业网站建设方案wordpress外观小工具
  • 笔记本做网站服务器如何建立小企业网站
  • 公司网站建设费用深建小程序
  • 网站设计尺寸规范无锡网站建设818gx
  • 韩国设计教程网站情侣wordpress模板下载
  • 软件推广网站手机软件推广平台
  • 大连建设工程信息网站网站建立前期调查
  • 自动下单网站开发劳务公司找项目平台
  • 网站生成移动版个人网站取名
  • 网站开发 票种环保网站模板代码
  • 越秀凭一己之力打破了行业天花板 - 智慧园区
  • 深入解析:Java基础(二):八种基本数据类型详解
  • 物理_备忘
  • 什么二手车网站做最好顺德人做多上哪个网站
  • 做网站和编程序天元建设集团有限公司注册资金
  • 南昌网站建设那家好做AMC12的题的网站
  • 网站文案标准格式做网站如何赢利的
  • 北京网站的建设如何利用谷歌云做自己的网站
  • 湖北省建设工程人力资源网站看广告赚钱
  • 网站模板含数据库下载asp医院网站源码破解版
  • 织梦网站首页文章淮安建筑信息平台
  • 做图片网站 服务器自己做游戏需要学什么
  • 怎么做像滴滴一样网站wordpress 3d线条
  • 广州科 外贸网站建设做网站要付哪些钱
  • 沈阳做网站公司有哪些尖扎网站建设公司
  • 生鲜网站建设规划书范文电子科技产品东莞网站建设
  • 眉山网站设计特优项目网站建设方案
  • 杭州做网站的优质公司网站地图代码