spring
阿踏踏踏踏
这个作者很懒,什么都没留下…
展开
-
Spring boot源码二:启动类源码
SpringApplication.run(SpringBootTestApplication.class, args);通过这样一键启动spring boot,对这段代码研究:run方法中首先会实例化一个SpringApplication,其构造函数如下:point1:这里判断当前的应用类型,通过WebApplicationType.deduceFromClasspath()方法,原理是通过判断有没有加载到几个特定的类,这里我们如果是Servlet应用的话,其判断结果就是Servlet,最原创 2020-08-10 10:38:54 · 430 阅读 · 0 评论 -
Spring源码讲解(七)Spring中的事件广播机制(Event)
Spring关于Event的相关文档准备工作在spring容器初始化时会做两件事(参考AbstractApplicationContext#refresh方法):1.初始化一个事件广播器AbstractApplicationContext#initApplicationEventMulticaster事件广播器对象主要是用来发布事件的,从上面的源码可以看出来,spring默认注册一个SimpleApplicationEventMulticaster类型的广播器对象,且bean的名原创 2020-08-10 10:03:43 · 1514 阅读 · 0 评论 -
Spring boot源码一:集成Web MVC
在spring中的spring-boot-autoconfigure包下面有个spring.factories文件,包含了所有Spring boot默认的配置,其中有一个是WebMvcAutoConfiguration,这里会配置所有MVC须要的相关配置项(HandlerMapping&ViewResolver&MessageConverter等)。我们看下这个类上的注解可以发现其启用须要一些条件:首先工程下必须有Servlet相关的类,所以其底层也是MVC那套Dispatche原创 2020-08-07 11:53:10 · 390 阅读 · 0 评论 -
Spring MVC源码篇
第一步 加载默认策略DispatcherServlet类加载的时候会执行其static代码块,其中读取其内部的DispatcherServlet.properties属性文件加载所有配置的属性,以key,value的形式加载到名为defaultStrategies的Properties中作为其默认的策略。上面的DEFAULT_STRATEGIES_PATH就是文件名DispatcherServlet.properties,看下这个属性文件包含了哪些:其中比较常用的:两个Han..原创 2020-08-06 16:38:34 · 296 阅读 · 0 评论 -
Spring MVC应用篇---启动配置那些事
关于Spring Mvc的配置传统的配置(Servlet2.0)传统的Spring Mvc配置时须要在web.xml上配置以下内容:这其实是Servlet2.0的规范:1.配置一个ContextLoaderListener作为spring容器初始化的监听器,这样web容器启动的时候(比如tomcat)会通过这个监听器初始化容器。2.配置spring容器初始化时须要读取的配置文件,配合ContextLoaderListener使用。3.配置一个DispatcherServle.原创 2020-08-06 15:45:03 · 477 阅读 · 0 评论 -
Spring源码讲解(六)BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor的扩展区别
由于Spring源码过于庞大,文章中不会列出细节,须要大家花时间下去研究哦这两个扩展点的触发时机基本类似,都是在BeanDefinition加载之后,Bean实例化之前。之所以称为基本类似是因为并非完全相同,官方文档对其接口方法的定义有所不同:BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry:All regular bean definitions will have been loaded,but n原创 2020-08-06 15:21:41 · 1162 阅读 · 0 评论 -
Spring源码讲解(五)Spring中的生命周期回调
由于Spring源码过于庞大,文章中不会列出细节,须要大家花时间下去研究哦当代码执行完populateBean之后,spring对bean的属性注入就完成了,这个时候的bean已经可以称作是一个真正的bean了,其生命周期已经基本走完了,之后就是执行他的生命周期回调。具体的方法是AbstractAutowireCapableBeanFactory#initializeBean:point1:invokeAwareMethods中会判断当前bean是否实现了以下接口:BeanNameAwa原创 2020-08-06 15:21:26 · 591 阅读 · 0 评论 -
Spring源码讲解(四)Spring中bean的属性注入
由于Spring源码过于庞大,文章中不会列出细节,须要大家花时间下去研究哦获取要注入的属性的源信息当BeanFactory(AbstractAutowireCapableBeanFactory)调用doCreateBean方法实例化完一个对象之后,会调用第三次后置处理器:可以看到第三次后置处理器是找寻实现了MergedBeanDefinitionPostProcessor接口的后置处理器执行其postProcessMergedBeanDefinition方法,Spring中关键的两个实现原创 2020-08-06 15:21:14 · 1000 阅读 · 0 评论 -
Spring源码讲解(三)Spring中Bean的实例化和解决循环依赖问题
由于Spring源码过于庞大,文章中不会列出细节,须要大家花时间下去研究哦spring中bean的实例化是从AbstractApplicationContext的finishBeanFactoryInitialization方法开始的,具体的链路是:AnnotationConfigApplicationContext#refresh ->AbstractApplicationContext#finishBeanFactoryInitialization ->DefaultList原创 2020-08-06 15:21:02 · 434 阅读 · 0 评论 -
Spring源码讲解(二)Spring的类扫描(@ComponentScan)
由于Spring源码过于庞大,文章中不会列出细节,须要大家花时间下去研究哦spring类扫描主要依赖ClassPathBeanDefinitionScanner类(源码一中分析过)ClassPathBeanDefinitionScanner实例化时最终会调用ClassPathScanningCandidateComponentProvider#registerDefaultFilters方法:useDefaultFilters是spring默认传的true,看下这个registerDefau原创 2020-08-06 15:20:49 · 536 阅读 · 0 评论 -
Spring源码讲解(一)Spring注册BeanDefinition(解析配置类)
在AnnotationConfigApplicationContext上下文对象实例化时,spring会实例化这两个对象,AnnotatedBeanDefinitionReader对象顾名思义就是AnnotatedGenericBeanDefinition类型的bd的读取器,调用其register方法注册的bean注册的bd类型就是AnnotatedGenericBeanDefinition。spring中通过注解启动spring容器时使用的AnnotationConfigAp...原创 2020-08-06 15:20:37 · 851 阅读 · 5 评论 -
spring mvc web应用异常处理
原文转载 :http://cgs1999.iteye.com/blog/1547197优先级 SimpleMappingExceptionResolver > 自定义异常处理器HandlerExceptionResolver > @ExceptionHandler在web.xml 中配置的未捕获异常优先级最低 404 /ErrorHandler转载 2015-10-12 17:31:30 · 364 阅读 · 0 评论 -
spring多数据源配置
主要内容转载自别人的博客,加了一些自己的备注和理解http://blog.csdn.net/fyxxq/article/details/8684039转载 2015-09-20 14:53:12 · 418 阅读 · 0 评论 -
Spring MVC 异常处理详解
原文转载 :http://mp.weixin.qq.com/s?__biz=MjM5NzMyMjAwMA==&mid=2651478615&idx=2&sn=0f42544c5374527d7fd662d0af131e5e&chksm=bd2536288a52bf3e732b7fea504319bf906a4f8ae77c3f6ec0da9e0fefef96d4c9bee7714a2f&mpsha转载 2017-06-09 09:11:22 · 364 阅读 · 0 评论 -
getRootConfigClasses和getServletConfigClasses区别
在spring in action这本书中关于配置DispatchServlet中如果用非xml的配置方式有这么一段代码(当时很疑惑着两个配置类有什么区别):package spittr.config;import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitialize...转载 2018-06-16 13:31:00 · 465 阅读 · 0 评论 -
Spring容器初始化全过程
spring容器主要有三种初始化方式,xml;注解;JavaConfig+注解形式,这里以目前最前卫的JavaConfig初始化方式来解读整个容器的初始化。(毕竟spring官方都强烈建议这种初始化方式,但可悲的是,国内的大部分中小企业还是使用传统的xml...)AnnotationConfigApplicationContext context = new AnnotationConfigA...原创 2019-04-16 22:11:43 · 6110 阅读 · 0 评论 -
Spring Data Redis配置+源码解读+扩展
简介Spring Data Redis是spring基于Redis做的一些模块化功能,属于spring全家桶其中之一,本篇文章主要是讲其中关于数据缓存方面的实现+源码解读+优化。都知道Redis的其中一个很好的应用场景就是做数据缓存,在没研究Spring的这一块功能之前,我自己也写过基于redis做的缓存实现spring aop结合redis实现数据缓存,Spring对redis缓存的设...原创 2019-06-20 21:30:57 · 1249 阅读 · 0 评论 -
Spring Boot全局异常处理
Spring Boot默认启动的时候会注入一个专门处理异常的自动配置类:@Configuration@ConditionalOnWebApplication(type = Type.SERVLET)@ConditionalOnClass({ Servlet.class, DispatcherServlet.class })// Load before the main WebMvcAu...原创 2019-08-08 09:44:58 · 324 阅读 · 3 评论 -
自定义SimpleMappingExceptionResolver实现个性化的异常处理
Spring MVC 的SimpleMappingExceptionResolver是一个简单的异常处理bean,说他简单是因为SimpleMappingExceptionResolver只能获得内置的异常信息,用户无法将自定义的异常信息带到页面上供用户查看,且SimpleMappingExceptionResolver不支持ajax的异常处理。为了能够让异常体制更具个性化。我们常做的方法是实现H原创 2015-10-19 14:18:15 · 3204 阅读 · 0 评论