文章分类 - Spring 高级49讲
摘要:第四十九讲-事件发布器 本讲我们来学习一下事件发布器,考虑一下如我们自己定义一个事件发布器需要考虑哪些问题? 事件发布器对应的接口我们见过,即ApplicationEventMulticaster,我们一直用的是Spring提供的对该接口的实现SimpleApplicationEventMultic
阅读全文
摘要:第四十八讲-事件监听器 Spring当中有一个非常好的机制,就是事件。事件可以实现组件之间的解耦。本讲我们来看一下事件监听器的使用 1. 事件监听器实现1-实现ApplicationListener接口 如下面的代码: // 事件解耦例子 @Configuration public class A4
阅读全文
摘要:第四十七讲-Autowired注入底层 本讲我们来讲一下@Autowired注入底层 我们都知道@Autowired注入是按照类型来进行装配(注入)的,它要支持各种各样的类型,这就决定了@Autowired的实现非常的复杂。 我们来看一个例子: @Configuration public class
阅读全文
摘要:第四十六讲-@Value注入底层(第四讲延续) 如下面的代码: // 本章节作为第四讲的延续 @Configuration @SuppressWarnings("all") public class A46 { public static void main(String[] args) throw
阅读全文
摘要:第四十五讲-Spring代理的特点 本讲我们来演示一下Spring中代理类的特点。 1. 依赖注入和初始化阶段影响的是原始对象 2. 代理和目标是两个对象,两者成员变量并不公用数据 3. static方法, final方法, private 方法均无法实现增强! 换句话说,依赖注入是给原始对象进行依
阅读全文
摘要:第四十四讲-@Indexed的原理 本讲我们讲一下@Indexed注解的原理。 我们都知道,Spring中组件扫描的效率是非常低的,因为它要去遍历项目中所有的jar包,然后classes目录下所有的类文件,一个类一个类去进行分析,看看这些类上有没有标注@Component及其它的派生注解,如果有的话
阅读全文
摘要:第四十三讲 FactoryBean 从这一讲开始,我们来讲一些相对比较零散的知识, 这些知识是对之前知识的查漏补缺。 本讲我们来讲一下FactoryBean的工作机制和缺憾。 这个FactoryBean是一个工厂Bean, 它是用来产生一个产品对象的。这个FactoryBean本身是受Spring容
阅读全文
摘要:第四十二讲-条件装配底层 我们在看Spring Boot底层自动配置类的时候发现,Spring Boot底层的自动配置类用到了注解作为条件,条件成立了才会走相应的配置类,那我们也来模仿一下: 有这样一个需求,如何当前项目中引入了Druid数据库连接池,那么我们指定Condition1条件成立,并使得
阅读全文
摘要:第四十一讲-自动配置原理 1. 自动配置类原理 假设在我们编写了一些配置类(第三方提供的配置类),那么我们在我们自己的项目中怎么将这些第三方配置类整合进来呢?如下面的代码: public class A41Application { public static void main(String[]
阅读全文
摘要:第四十讲-Tomcat内嵌容器 这一讲,我们来学习一下Tomcat内嵌容器。我们首先看一下Tomcat容器的重要组成: 如上面的这张图,展示了Tomcat中一些重要的组件。 Connector:连接器,连接器决定了将来请求是以什么协议,哪个端口来连接到Tomcat服务器上 Engine:执行引擎,负
阅读全文
摘要:第三十九讲-Spring Boot启动过程分析(非常重要) 接下来我们来了解一下Spring Boot的启动流程。 Spring Boot的启动划分为两个阶段: 创建一个SpringApplication对象 调用SpringApplication对象的run方法,这其中包括12大步骤和7个事件 接
阅读全文
摘要:第三十八讲-Spring Boot War项目 本讲我们来讲一下如何使用SpringBoot搭建和运行一个war项目。 1. 基本配置 首先在main目录下创建一个文件夹webapp,在该文件夹下创建一个jsp文件hello.jsp: <page contentType="text/html;cha
阅读全文
摘要:第三十七讲-Spring Boot脚手架搭建 这里呢,我们创建一个Spring Boot脚手架项目,对于学习Spring相关源码的读者来讲,如何创建一个Spring Boot脚手架并不是一个难的事情,这里呢,就不再做演示了,各位读者可以自行创建一个Spring Boot脚手架项目。 我在这里展示一下
阅读全文
摘要:第三十六讲-MVC处理请求流程 本讲我们来看一下Spring MVC相对完整的处理流程。 当浏览器发送一个请求http:/Toca1host:8080/he11o后,请求到达服务器,其处理流程是: 服务器提供了DispatcherServlet,它使用的是标准Servlet技术 路径:默认映射路径为
阅读全文
摘要:第三十五讲-HandlerMapping与HandlerAdapter-3 1. SimpleUrlHandlerMapping和HttpRequestHandlerAdapter 这讲我们再介绍一组HandlerMapping和HandlerAdapter:SimpleUrlHandlerMapp
阅读全文
摘要:第三十四讲-HandlerMapping与HandlerAdapter-2 这一讲,我们来了解一下RouterFunctionMapping和HandlerFunctionAdapter。 RouterFunctionMapping和HandlerFunctionAdapter是在Spring5.2
阅读全文
摘要:第三十三讲-HandlerMapping与HandlerAdapter 1. Spring提供的BeanNameUrlHandlerMapping和SimpleControllerHandlerAdapter 我们之前使用SpringMVC的HandlerMapping与HandlerAdapter
阅读全文
摘要:第三十二讲-Tomcat 异常处理 我们前面讲的@ControllerAdvice配合@ExceptionHandler可以处理异常,但是实际上这套组合处理的异常是非常有限的。为什么这么说呢?如果是Spring MVC框架控制器抛出的异常,那么最终可以是由@ControllerAdvice处理的。但
阅读全文
摘要:第三十一讲-ControllerAdvice之@ExceptionHandler 本将我们来看一下ControllerAdvice的第四种增强方式:通过在ControllerAdvice类中添加@ExceptionHandler的方法来达到全局处理异常的目的。 我们希望不为每一个控制器创建一个异常处
阅读全文
摘要:第三十讲-SpringMVC中的异常处理 SpringMVC在执行HandlerAdapter的过程中,也就是执行控制器方法的过程中,例如参数解析,参数名解析,返回值解析,类型转换。数据绑定时的任何一步一旦出现异常,就会立即捕捉该异常,并进行处理!那么在异常注意过程中究竟干了哪些事呢?我们可以看一下
阅读全文