spring
文章平均质量分 79
程序员-晨夕
这个作者很懒,什么都没留下…
展开
-
spring异步调用注解@Async实现原理分析
spring异步调用注解@Async实现原理分析1、首先看下注解,可以加在类上,也可以加在方法上2、需要在启动类加上@EnableAsync注解导入了AsyncConfigurationSelector调用selectImports方法。默认会注入ProxyAsyncConfiguraion看下ProxyAsyncConfiguration类会创建一个后置处理器AsyncAnnotationBeanPostProcessor,看下这个后置处理器AsyncAnnotation原创 2021-04-02 15:36:43 · 596 阅读 · 0 评论 -
spring启动过程的追踪(七)——@Autowired注解生效时机、spring创建对象doGetBean方法详细解析、spring三级缓存解决循环依赖
spring创建Bean得过程非常复杂,本文将分段进行解析,尽量阐述更加清晰1、finishBeanFactoryInitialization(beanFactory);spring创建得单实例对象,大部分是在这个方法里面进行创建的根据最后一行代码可知,其作用是实例化所有的非懒加载的单例对象2、循环遍历beanDefinitionNamespublic void preInstantiateSingletons() throws BeansException { List<Str.原创 2021-03-05 16:44:24 · 574 阅读 · 0 评论 -
spring启动过程的追踪(六)——initApplicationEventMulticaster初始化事件广播器
initApplicationEventMulticaster初始化事件广播器1、初始化应用事件广播器。这是观察者模式得典型应用。我们知道观察者模式由主题Subject和Observer组成。广播器相当于主题Subject,其包含多个监听器。当主题发生变化时会通知所有得监听器。protected void initApplicationEventMulticaster() { ConfigurableListableBeanFactory beanFactory = getBeanFactory()原创 2021-03-04 16:03:46 · 360 阅读 · 1 评论 -
spring启动过程的追踪(五)——registerBeanPostProcessors注册后置处理器
registerBeanPostProcessors注册后置处理器对于方法执行的先后顺序可看之前文章一、在调用注册后置处理器方法之前我们先看看截至当前,服务内总共有哪些后置处理器,都是在什么时机下被放到容器的什么地方001 、加载系统默认beanDefinition 这个文章里面我们可以看到,首先加入的beanDefinition中有些是属于BeanPostProcessor类型的,当前beanFactory中信息如下,系统默认beanDefinition 存储在beanDefinitionMa原创 2021-03-04 10:35:22 · 198 阅读 · 1 评论 -
spring启动过程的追踪(四)——@Configuration、@ComponentScan注解生效时机
@Configuration、@ComponentScan注解生效时机上一篇文章spring启动加载内部beanDefinition清楚的展示了spring启动过程loadDefinitions信息,此时容器中只有系统内部类还有java配置类的定义信息,本文阐述invokeBeanFactoryPostProcessors(beanFactory);方法1、AbstractApplicationContext类的invokeBeanFactoryPostProcessors方法 protected原创 2021-03-03 17:29:13 · 1265 阅读 · 2 评论 -
spring启动过程的追踪(三)——加载默认的beanDefinition
spring容器注册默认的BeanDefinition上文(spring启动过程追踪(二))简单描述了注解版本spring容器启动的beanFactory的创建,本文将阐述AnnotationConfigWebApplicaitonContext在加载beanDefinitions时默认加载系统自定义的部分bean的定义信息根据代码可知loadBeanDefinitons方法内部创建了AnnotatedBeanDefinitionReader实例对象,进入构造函数可知最后调用了注解配置工具类,原创 2021-03-03 10:54:48 · 276 阅读 · 0 评论 -
spring启动过程的追踪(二)——创建beanFactory
AnnotationConfigWebApplicationContext的刷新方法分析上文简单的分析了web容器创建步骤,本文简要阐明spring启动的关键方法refresh方法1、AnnotationConfigWebApplicationContext的继承关系图AnnotationConfigWebApplicationContext >>AbstractRefreshableWebApplicationContext原创 2021-03-02 16:58:01 · 265 阅读 · 0 评论 -
Spring启动过程的追踪(一)-refresh方法的触发时机
Spring启动过程追踪闲来无事,想着把spring工作机制梳理梳理,当下spring框架确实是非常牛逼的存在,扩展了很多模块,springboot springcloud springsecurity等都是spring衍生出来的web容器启动WEB项目启动时候,会加载web.xml文件,在web.xml中配置了ContextLoaderListener(监听器),下面分析下这个监听器对象1、ContextLoaderListener类信息public class ContextLoade原创 2021-03-02 15:10:45 · 724 阅读 · 0 评论