文章分类 -  Spring 高级49讲

摘要:第二十九讲-ControllerAdvice之ResponseBodyAdvice 本讲我们看一下ControllerAdvice的扩展功能-ResponseBodyAdvice ResponseBodyAdvice本质上就是对消息转换的一个扩展点。这里呢,我们来分析一下ResponseBodyAd 阅读全文
posted @ 2024-08-13 21:18 LilyFlower 阅读(1) 评论(0) 推荐(0) 编辑
摘要:第二十八讲-消息转换器MessageConverter 本讲我们来了解一一下消息转换器MessageConverter。其实我们在前面很多地方都用过消息转换器,如上一讲的返回处理器中的@ResponseBody中讲Java对象转为JSON,只不过一笔带过。本讲我们来介绍一下消息转换器。 我们首先看一 阅读全文
posted @ 2024-08-13 19:25 LilyFlower 阅读(7) 评论(0) 推荐(0) 编辑
摘要:第二十七讲-常见的返回值处理器 本讲我们来了解一下常见的返回值处理器的作用 1. 返回值类型为ModelAndView 我们首先编写一段控制器代码: static class Controller { private static final Logger log = LoggerFactory.g 阅读全文
posted @ 2024-08-12 20:04 LilyFlower 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第二十六讲-ControlerAdvice之@ModelAttribute ​ 我们首先来了解一下@ModelAttribute注解的用法: 第一种是加在方法参数上 第二种是加在方法上 这两种我们在上一讲已经讲过。我们来看一下上讲的代码: @Configuration public class We 阅读全文
posted @ 2024-08-12 18:20 LilyFlower 阅读(3) 评论(0) 推荐(0) 编辑
摘要:第二十五讲-控制器方法执行流程 我们前面说了,对于HandlerAdapter最重要的功能就是执行控制器中的方法,那么控制器方法包含哪些部分呢?我们看一下下面的这张图; HandlerMethod需要 bean即是哪个Controller method即是Controller中的哪个方法 Servl 阅读全文
posted @ 2024-08-11 11:35 LilyFlower 阅读(5) 评论(0) 推荐(0) 编辑
摘要:第二十四讲-@ControllerAdvise @ControllerAdvice是对所有控制器做一些功能增强,它能提供哪些方面的功能增强呢?其实一共有三种: 一种是@ExceptionHandler:将来控制器抛出异常了,由@ExceptionHandler来处理-->加在方法上 一种是@Mode 阅读全文
posted @ 2024-08-11 10:36 LilyFlower 阅读(15) 评论(0) 推荐(0) 编辑
摘要:第二十三讲-对象绑定与类型转换 1. 底层第一套转换接口实现(Spring提供) 底层第一套接口与实现 Printer: 把其它类型转为String类型 ParserL 把字符串类型转为其它类型 Formatter: 综合Printer和Parser功能 Converter: 把类型S转为类型T 我 阅读全文
posted @ 2024-08-09 18:59 LilyFlower 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第二十二讲-获取方法中的参数名 这一讲我们看一下获取方法的参数名称。 要想获取参数名称,就要在参数解析组合器中加入一个参数名称解析器DefaultParameterNameDiscoverer,所以参数名的获取并不是那么简单的。下面我们来探讨一下: 我们写一个简单一点的Java类,然后呢,手动编译这 阅读全文
posted @ 2024-08-08 14:34 LilyFlower 阅读(6) 评论(0) 推荐(0) 编辑
摘要:第二十一讲-不同的参数解析器 前面我们在介绍HandlerAdapter的时候,它在调用控制器方法之前,就要为控制器方法准备好每一个参数,准备参数的工作,当然是交给参数解析器来完成的。本讲我们来了解一下常见的参数解析器,以及这些参数解析器的作用是什么。 前面我们在介绍RequestMappingHa 阅读全文
posted @ 2024-08-07 19:42 LilyFlower 阅读(10) 评论(0) 推荐(0) 编辑
摘要:第二十讲-DispatcherServlet 1. DispatcherServlet初始化时机 我们首先创建一个支持Tomcat WEB的Spring容器: package com.cherry.a20; import org.slf4j.Logger; import org.slf4j.Logg 阅读全文
posted @ 2024-08-06 23:33 LilyFlower 阅读(9) 评论(0) 推荐(0) 编辑
摘要:第十九讲-动态通知调用 所谓的动态和静态是什么意思呢?看下面的代码: @Aspect static class MyAspect{ // 静态通知调用 @Before("execution(* foo(...))") public void before1(){ System.out.println 阅读全文
posted @ 2024-08-05 12:50 LilyFlower 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第十八讲 通知调用(责任链模式) AOP有各种通知类型,但是最终都要统一转为环绕通知执行,我们首先看一下代码中的图: package org.springframework.aop.framework; import org.aopalliance.intercept.MethodInvocatio 阅读全文
posted @ 2024-08-04 18:35 LilyFlower 阅读(8) 评论(0) 推荐(0) 编辑
摘要:第十七讲-Spring中的两种切面 Spring种有两种切面,一种是高级的@Aspect切面,还有一种是低级的Advisor切面,这里的低级指的是比较底层的切面。对于高级切面来讲,@Aspect切面最终都会转为低级切面才会被Spring框架所使用。 如下面的演示: package com.cherr 阅读全文
posted @ 2024-08-03 19:28 LilyFlower 阅读(13) 评论(0) 推荐(0) 编辑
摘要:第十六讲-切点匹配 1. 基于方法的名字进行切点匹配 前面我们已经了解到,Spring使用切点老判断某个目标方法是否进行功能增强,我们前面也使用了AspectJ表达式来匹配某个方法需要进行功能增强。 那么切点到底是怎么匹配并判断我们设置的方法的呢?其实这个判断来自于AspectJExpression 阅读全文
posted @ 2024-08-02 20:03 LilyFlower 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第十五讲-Spring选择代理 在Spring中,存在两个切面,一个是aspect,另一个是advisor,advisor相比于aspect是更细粒度的切面,切面类包含一个通知和切点。而一个切面是由通知和切点组成, 通知表现为一个方法,也就是增强的方法;切点决定了将来目标的哪些方法需要增强。一般为A 阅读全文
posted @ 2024-08-02 18:43 LilyFlower 阅读(2) 评论(0) 推荐(0) 编辑
摘要:第十四讲-Cglib代理原理 1. Cglib代理类的模拟实现 首先准备一个目标类: package com.cherry.chapter1.a14; public class Target { public void save(){ System.out.println("save()"); } 阅读全文
posted @ 2024-08-01 14:06 LilyFlower 阅读(16) 评论(0) 推荐(0) 编辑
摘要:JDK代理原理 1. JDK代理类的模拟实现 JDK动态代理的原理内部实现在Proxy.newInstance方法中,其原理是使用了ASM动态的生成代理类的字节码,我们无法看出对应代理类的Java代码是什么样子的。 因此这里呢,我们模拟一下JDK的代理实现: 我们首先编写一个接口以及接口的实现类: 阅读全文
posted @ 2024-08-01 11:00 LilyFlower 阅读(6) 评论(0) 推荐(0) 编辑
摘要:第十二讲-AOP之proxy增强-cglib 使用Cglib作为代理的例子 package com.cherry.a12; import org.springframework.cglib.proxy.Enhancer; import org.springframework.cglib.proxy. 阅读全文
posted @ 2024-07-28 15:03 LilyFlower 阅读(11) 评论(0) 推荐(0) 编辑
摘要:第十一讲-AOP之动态代理增强JDK JDK实现动态代理需要三个参数: ClassLoader loader, 类加载器,JDK代理是在运行期间生成代理类的字节码,因此需要类加载器在运行时被加载 Class<?>[] interfaces, 需要实现的接口 InvocationHandler h 实 阅读全文
posted @ 2024-07-28 12:19 LilyFlower 阅读(10) 评论(0) 推荐(0) 编辑
摘要:第十讲-AOP实现之agent(类加载增强) 本讲来讲解使用agent类加载阶段实现功能增强。如下面的代码: 在类加载时使用JVM参数,注意后面的aspectjweaver-1.9.7.jar改成自己的路径: -javaagent:D:/development_tools/mvn_repositor 阅读全文
posted @ 2024-07-26 19:36 LilyFlower 阅读(22) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示