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

网站建设教程搭建汽岁湖南岚鸿专注顶棒 技术支持 东莞网站建设

网站建设教程搭建汽岁湖南岚鸿专注,顶棒 技术支持 东莞网站建设,国外做家居类的网站,新竹自助建站系统前言#xff1a;本文不介绍 AOP 的基本概念、动态代理方式实现 AOP#xff0c;以及 Spring 框架去实现 AOP。本文重点介绍 Spring Boot 项目中如何使用 AOP#xff0c;也就是实际项目开发中如何使用 AOP 去实现相关功能。 如果有需要了解 AOP 的概念、动态代理实现 AOP 的本文不介绍 AOP 的基本概念、动态代理方式实现 AOP以及 Spring 框架去实现 AOP。本文重点介绍 Spring Boot 项目中如何使用 AOP也就是实际项目开发中如何使用 AOP 去实现相关功能。 如果有需要了解 AOP 的概念、动态代理实现 AOP 的请查看我的另外一篇文章 一篇文章带你深入了解 AOP 正文开始 Spring Boot中实际应用AOP 1、之前介绍的实现 AOP 的方式中是有 XML 文件设置。但在 Spring Boot 中没有 XML 文件那怎么设置 AOP 2、实际应用中MVC三层架构现需要在控制器中统一进行日志的输出有各种各样的控制器那怎么实现也就是说实际应用中如何实现 1、Cal 接口、CalIml 接口实现类 还是跟 Spring框架实现AOP 中一样。之前的两个依赖不要添加这个依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId /dependency2、控制器中需要打印日志比如调控制器中的哪个方法接口、方法有哪些参数、返回值。当然你肯定可以在每个方法中写但显然这不现实。这里用 AOP 方法将打印日志抽离出来然后需要的时候嵌入到每个方法中 //以下代码仅是为了测试代码不规范请注意。RestController RequestMapping(/aop) public class AopSpringBootTestHandler {GetMapping(/findAll)public ListAccount findAll() {return Arrays.asList(new Account(1, 张三, 25), new Account(2, 李四, 26));}GetMapping(/findById/{id})public Account findById(PathVariable Integer id) {return new Account(1, 张三, 25);}GetMapping(/add)public boolean add() {return true;}GetMapping(/update)public boolean update() {return true;}GetMapping(/delete/{id})public boolean delete(PathVariable Integer id) {return true;} }自定义注解 3、自定义注解比如创建一个 annotation 的包然后创建一个 LogAnnotation可自定义比如这里是打印日志的注解 为什么要这个自定义注解---- 首先你要让 AOP 知道你调了哪些方、哪些方法需要让 AOP 进行处理所以就要让 AOP 知道这些方法怎么知道 ---- 通过自定义注解 其次并不是所有的方法都需要进行 AOP 处理所以通过 注解 标记。 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface LogAnnotation {//使用注解时给注解中添加值String value() default ; }说明Target、Retention、Documented 都是元注解描述注解的注解 Target 表示该注解的使用目标其中 Target(ElementType.METHOD) 表示只能使用在方法上 Retention(RetentionPolicy.RUNTIME) 表示在运行时使用该注解。 interface 标志这是一个注解。 String value() default ; 固定写法表示在使用注解的时候可以添加值默认为空 **使用自定义注解**需要进行 AOP 处理的方法标记即可 4、标记完后同理需要切面类执行非业务代码比如这里是输出日志 Component Aspect public class CreateAspectUtil {/*我们利用自定义注解标记了哪些方法需要进行AOP处理那真正需要处理的时候怎么找到这些标记通过 Pointcut切入点找到这些标记所以这个方法就是为了找到标记必须是空方法体*/Pointcut(annotation(com.example.test.aopspringboottest.annotation.LogAnnotation))public void logPointCut() {}/*找到标记后怎么执行日志1、跟之前一样有Before前置通知、After后置通知等等Around注解就是将各种通知统一到一起然后将找标记的方法放进去2、连接点 ProceedingJoinPoint 是 joinPoint 的子接口只是ProceedingJoinPoint中有这个proceed()方法为了获取方法的返回值*/Around(logPointCut())public Object around(ProceedingJoinPoint joinPoint) throws Throwable {String methodName joinPoint.getSignature().getName();String methodArgs Arrays.toString(joinPoint.getArgs());System.out.println(methodName 方法的参数是 methodArgs);return joinPoint.proceed(); //返回目标方法也就是业务代码中的返回值} }演示 启动启动类后直接访问 没加标记的就不会打印日志。 注意现在还要求输出自定义注解中的值 怎么办---- 通过反射获取注解即可 既然获取注解注解是添加在方法上的所以先通过反射获取方法怎么获取---- 只有一个连接点所以还是通过连接点 Around(logPointcut()) public Object around(ProceedingJointPoint jointPoint) throws Throwable {//通过连接点获取到方法的签名MethodSignature methodSignature (MethodSignature)joinPoint.getSignature();//通过方法签名获取到方法Method method methodSignature.getMethod();//拿到方法后拿注解把自定义注解的运行时类给它LogAnnotation annotation method.getAnnotation(LogAnnotation.class);if (annotation ! null) {//拿注解中的值通过里面的value方法String value annotation.value();//这个value就是注解里面的内容System.out.println(value);} }
http://www.eeditor.cn/news/119044/

相关文章:

  • 常州网站关键词优化咨询山东电商运营公司排名
  • 沈阳高铁站点点网 wordpress
  • 手机有软件做ppt下载网站有哪些内容百度seo优化怎么做
  • 360网站建设怎么用企业邮箱申请域名
  • 肥城网站设计公司编程一般要学多久
  • 番禺网站建设培训wordpress添加媒体在角落
  • 网站后台建设自己怎么做一个企业官网
  • 网站建设面试试题做的比较好的法律实务培训网站
  • 网站制作的差异化定位制作竞拍网站
  • 站酷网海报素材图片中小型网站建设教程
  • 网站做seo优化有什么优势vue开发视频网站
  • 哪里可以建网站移动吉生活app下载
  • 展示型网站php视频网站闪图怎么做
  • 莱芜关于网站建设的公司鄂州网站制作
  • wordpress是英文版微博搜索引擎优化
  • 网站更改备案信息在哪wordpress 3.8 中文
  • 长春网站建设公司十佳简易的旅游网页制作
  • 如何做视频网站首页深圳宝安沙井网站建设
  • 新世纪建设集团有限公司网站网站备案用户名
  • 做网站成品做网站的股哥
  • 湖北建设厅行政服务中心网站专做英文类网站
  • 源码站学校网站建设说明书
  • 建企业网站要多少钱wordpress 微信打赏
  • 成都网站建设爱特通e龙岩服务平台
  • 网站建设软件定制开发wordpress怎么写root.txt
  • 团购网站管理系统菲律宾 做菠菜网站
  • 免费做网站的app免费的源码分享网站
  • 商城网站开发需要多少钱礼县建设局网站
  • 大气手机企业网站域名注册网站免费
  • 天津响应式网页建设公司网站如何优化