sping
hongxingxiaonan
这个作者很懒,什么都没留下…
展开
-
springboot源码解读之内嵌tomcat的启动
目录BeanDefinition注册创建配置TomcatTomcat基本组件配置Context配置TomcatStart中的initializer启动tomcatService启动容器启动DefaultServlet悬案启动Connector在springboot之前,web服务都是要部署在web容器里的。但是springboot改变了这个模式,web...原创 2020-04-16 00:28:30 · 504 阅读 · 0 评论 -
springboot源码解读之@ConfigurationProperties原理
动态注册ImportBeanDefinitionRegistrar是spring提供的动态注册的扩展点,它与@Configuration和@Import注解配合可以实现组件的动态注册。需要该组件时就注册组件,使用相关的功能;不需要该组件就不注册组件。只需要一个类型@EnableXXX注解就可以决定是否注册该组件。ConfigurationClassParser从声明了@Configurati...原创 2020-04-11 23:43:09 · 909 阅读 · 0 评论 -
springboot源码解读之RefreshScope动态刷新配置
目录scope原理从容器中获取scope bean负责创建scope bean的ScopedProxyFactoryBeanRefreshScopeRefreshScope缓存清理配置重新加载scope原理从容器中获取scope beanscope是spring framework中的概念,对于singleton和prototype对象的获取在beanFa...原创 2020-04-10 00:36:32 · 5530 阅读 · 0 评论 -
springboot源码解读之使用springcloud加载配置
前言前面一篇文章https://blog.csdn.net/hongxingxiaonan/article/details/105129792讲了springboot如何加载本地配置。默认情况下,springboot会加载classpath下的application.properties等文件。可能会遇到有的工程里配置了bootstrap.properties也是生效的,但并没有自定义spri...原创 2020-04-06 23:30:50 · 1042 阅读 · 0 评论 -
springboot源码解读之配置从哪来
概述用了一段时间springboot,但对于springboot的配置原理始终不太了解,带着如下疑问学习一下源码:springboot都从哪里读取配置,顺序是什么样的?bean中的属性是怎么注入的?配置变更时怎么动态修改bean属性?配置加载public ConfigurableApplicationContext run(String... args) { St...原创 2020-03-30 00:33:09 · 249 阅读 · 0 评论 -
SpringMVC中的HTTP跳转
SpringMVC中的HTTP跳转 项目开发中经常会碰到需要进行HTTP跳转的场景,比如用户请求一个需要登录之后才可以看到的页面,而此时需要跳转到登录页面,待登录成功之后在跳转会现在的页面。那么SpringMVC是怎样实现这样的跳转的呢?今天就让我们仔细的研究一下。一,Servlet中forward与redirect 在原生的Servlet技术中有两种跳转原创 2015-12-11 23:37:45 · 7142 阅读 · 2 评论 -
SpringMVC中WebDataBinder的应用及原理
SpringMVC中WebDataBinder的应用及原理 Controller方法的参数类型可以是基本类型,也可以是封装后的普通Java类型。若这个普通Java类型没有声明任何注解,则意味着它的每一个属性都需要到Request中去查找对应的请求参数。众所周知,无论客户端传入的是什么类型的请求参数,最终都要以字节的形式传给服务端。而服务端通过Request的getParamete原创 2015-12-13 17:01:14 · 25294 阅读 · 2 评论 -
SpringMVC中自定义参数解析器及内置类型的绑定
SpringMVC中自定义参数解析器及内置类型的绑定 前一篇文章讲述了使用标注方式进行参数绑定背后的参数解析原理,今天来整理一下没有使用标注的参数是怎样解析出来的。一,自定义参数解析器 有的时候我们希望在HandlerMethod中直接使用一些对象,而不需要主动去创建或获取。例如,我们想在一个请求方法的第一行打印出系统登录用户的相关信息,而这个用户信息已经再Request中原创 2015-11-28 22:09:20 · 10040 阅读 · 0 评论 -
SpringMVC中的HandlerAdapter
SpringMVC中的HandlerAdapter 还记得在DispatcherServlet中SpringMVC处理请求的逻辑吗,网上有一个非常棒的图,阐明了请求分发处理的整个过程。 映射处理器HandlerMapping根据Request返回一个HandlerExecutionChain实例,HandlerExecutionChain并不是真正的处理器Han原创 2015-11-29 22:24:31 · 4303 阅读 · 0 评论 -
SpringAOP模块初始化过程
SpringAOP模块初始化过程 SpringAOP模块的初始化过程可以分为如下几个步骤:1,读取配置,生成Advisor、PointCut等信息。 跟SpringAOP的相关标签比较多,我们可以选择任意一种方式声明AOP。如下就使用了三种不同的方式: 2,在容器创原创 2015-12-17 09:03:47 · 3194 阅读 · 0 评论 -
SpringMVC中HandlerMethod的请求参数解析过程
SpringMVC中HandlerMethod的请求参数解析过程 SpringMVC中处理请求的方法叫做HandlerMethod,HandlerMethod可以通过多种方式声明它的参数来源,同时对应着不同的解析过程。那么,今天我们就来详细的研究一下SpringMVC请求参数的解析过程。 直接定位到参数解析的方法,下面列出了HandlerMethodInvoker的resolveHand原创 2015-11-28 14:01:27 · 16986 阅读 · 0 评论 -
SpringMVC对HTTP报文体的处理
SpringMVC对HTTP报文体的处理 客户端和服务端HTTP报文传递消息,而HTTP报文包含报文头和报文体。通常,解析请求参数以及返回页面都不需要我们关心HTTP报文体的读取和生成过程。但在某些特定场景下需要直接到请求报文中读取报文体,或者将返回的数据直接写入到报文体中。 在SpringMVC中,可以利用RequestBody注解表示一个参数,说明解析它需要读取报文体,也原创 2015-12-12 20:23:08 · 4016 阅读 · 0 评论 -
无处不在的扩展点BeanPostProcessor
无处不在的扩展点BeanPostProcessor 在spring创建bean的过程中,多次出现了BeanPostProcessor的身影,它们是怎么来的,可以怎么用?本文就对spring中的BeanPostProcessor做个总结。 public interface BeanPostProcessor { Object postProcessBeforeI原创 2015-11-17 22:50:03 · 6140 阅读 · 0 评论 -
SpringMVC响应结果的生成
SpringMVC响应结果的生成 前面的文章讲过,SpringMVC接收到来自客户端的请求,找到处理请求的Handler,然后构造适配器HandleAdapter。HandleAdapter处理请求后返回ModelAndView对象(也可能返回null)。以RequestMappingHandlerAdapter为例,看看ModelAndView是怎样生成的,它的invokeHandlerM原创 2015-12-10 21:55:33 · 1941 阅读 · 0 评论 -
谈谈spring中的拦截器interceptor
谈谈spring中的拦截器interceptor在web开发中,拦截器是经常用到的功能。它可以帮我们验证是否登陆、预先设置数据以及统计方法的执行效率等等。今天就来详细的谈一下spring中的拦截器。spring中拦截器主要分两种,一个是HandlerInterceptor,一个是MethodInterceptor。一,HandlerInterceptor拦截器HandlerInterc原创 2015-08-29 22:25:47 · 25038 阅读 · 3 评论 -
SpringIoC初始化BeanDefinition解析——Resource的定位
SpringIoC初始化BeanDefinition解析——Resource的定位SpringIoC容器启动时会执行BeanDefinition的Resource定位、载入和注册。通过这个过程使得spring拥有了所有的bean的定义,为后续的bean的创建、自动注入和销毁提供了数据支持。本文主要说明spring如何找到所有的配置文件,即如何得到内部数据结构Resource的。开发原创 2015-09-13 14:31:03 · 4413 阅读 · 0 评论 -
SpringIoC依赖注入的过程(四)
SpringIoC依赖注入的过程(四) 上文讲了populateBean方法中处理自动注入的部分。自动注入虽然会减少配置的复杂度,但是每个bean之间的依赖关系不是很清晰,很难分辨出哪些属性是注入的哪些是正常的属性等等。在实际的开发中恨少使用自动注入的方式,大部分都是通过Autowired等标注需要注入的属性和方法。本文将继续说说这些注入方式是怎么进行注入的。populateBean原创 2015-11-05 23:15:32 · 5283 阅读 · 0 评论 -
SpringIoC依赖注入的过程(三)
SpringIoC依赖注入的过程(三) 上文说到doCreateBean的applyMergedBeanDefinitionPostProcessors方法找到了所有的声明了Autowired标注和Resource标注的字段和方法,以及声明了PostConstruct和PreDestroy标注的方法。到此为止,bean的依赖关系都已经解析到BeanDefinition中,接下来就是利用这原创 2015-11-04 22:50:17 · 4885 阅读 · 0 评论 -
SpringIoC依赖注入的过程(二)
SpringIoC依赖注入的过程(二) 上文讲到spring通过AbstractAutowireCapableBeanFactory的doCreateBean方法来创建并且初始化一个bean,doCreateBean首先生成一个未初始化的bean,然后再对它进行依赖注入、属性解析以及回调bean的方法等等。本文将继续讲解spring是如何做到这些的。 衔接上文,分析doCreate原创 2015-11-03 23:40:16 · 6426 阅读 · 0 评论 -
SpringIoC依赖注入的过程(五)
SpringIoC依赖注入的过程(五) 前面的文章讲到,Spring通过populateBean方法实现依赖的注入。它先是解析需要自动注入的属性,并且把解析出来的属性值保存到PropertyValues中,没有把解析出来的属性值直接设置到bean中;然后就对Autowired、Resource的属性和方法进行注入,直接设置了bean的属性值。现在依赖注入还差两个任务,一个是把之前解析出来原创 2015-11-07 22:46:47 · 5207 阅读 · 0 评论 -
SpringIoC依赖注入的过程(六)
SpringIoC依赖注入的过程(六) 前几篇文章详细地解读了Spring的依赖注入的过程,触发依赖注入的是getBean方法,依赖注入发生的地方是populateBean方法,而获取依赖bean的实例还是通过getBean方法。截止到上文已经解读完populateBean的全部逻辑,本文介绍下,依赖注入之后bean的初始化操作。回到AbstractAutowireCapableBean原创 2015-11-08 22:37:55 · 4072 阅读 · 0 评论 -
SpringIoC初始化BeanDefinition解析——从Resource到BeanDefinition
SpringIoC初始化BeanDefinition解析——从Resource到BeanDefinition上一篇文章解释了spring对Resource的定位过程,今天继续整理一下得到Resource后,spring如果将它转换成内部数据结构BeanDefinition的。从Resource到BeanDefinition大致分为两个过程,首先从Resource中读取xml文件,然后逐个解原创 2015-09-20 14:15:04 · 4312 阅读 · 0 评论 -
SpringIoC初始化BeanDefinition解析——注册
SpringIoC初始化BeanDefinition解析——注册 BeanDefinition的解析还差最后的注册过程,距离前两篇文章隔的有点久,现在补上。在DefaultListableBeanFactory中 /** Map of bean definition objects, keyed by bean name */ private final Map bean原创 2015-10-24 22:51:06 · 5897 阅读 · 0 评论 -
谈谈spring中bean的名字
谈谈spring中bean的名字 提到bean的名字,就要从声明bean的地方说起。在应用spring时,有两个地方可以声明一个bean,一个是在spring的配置文件中,一个是在代码中通过Component等标注声明。 代码中可以通过标注的方式来表示这个类是属于spring管理的类,这类标注有Component、Repository、Service以及Contro原创 2015-11-14 17:46:37 · 15371 阅读 · 3 评论 -
SpringIoC依赖注入的过程(一)
SpringIoC依赖注入的过程(一) 对spring稍有些了解的人都知道,依赖注入的发生是在第一次向容器索要bean时触发的。BeanFanctory为我们提供了一系列的getBean接口,它的实现大部分都在AbstractBeanFactory中,最终都会调用到doGetBean(final String name, final Class requiredType, final原创 2015-11-01 15:50:03 · 5660 阅读 · 0 评论 -
spingMVC模块handlerMapping的初始化过程
spingMVC模块handlerMapping的初始化过程首先简单描述一下,请求的分发过程。一个请求到来,会走到DispatcherServlet原创 2015-08-23 23:15:07 · 9054 阅读 · 1 评论