spring4.3.6
_jan_
这个作者很懒,什么都没留下…
展开
-
spring4.3.6源代码 - webmvc - BeanNameUrlHandlerMapping 路由识别、拦截器识别、路由匹配、参数解析器、返回值处理器
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping --------------BeanNameUrlHandlerMapping如何扫描Interceptor、Handler------------------- org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationContext c...原创 2020-08-25 19:28:27 · 149 阅读 · 0 评论 -
spring4.3.6源代码 - webmvc - RequestMappingHandlerMapping 路由识别、拦截器识别、路由匹配、参数解析器、返回值处理器
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping --------------RequestMappingHandlerMapping如何感知Interceptors------------------- // 1.通过xml声明注入的拦截器 org.springframework.web.servlet.handler.AbstractHandlerMapping.setInte.原创 2020-08-25 19:26:40 · 477 阅读 · 0 评论 -
spring4.3.6源代码 - webmvc - DispatcherServlet 初始化、接收请求
初始化 // Set bean properties from init parameters. try { PropertyValues pvs = new ServletConfigPropertyValues(getServletConfig(), this.requiredProperties); /* 用BeanWrapperImpl对象包装DispatcherServlet */ BeanWrapper bw = PropertyAc...原创 2020-08-23 12:13:58 · 173 阅读 · 0 评论 -
spring4.3.6源代码 - web - XmlWebApplicationContext 刷新、关闭
refresh void refresh_Debug() { if (false) { refresh(); } /* 《特殊》 1、替换 ServletEnvironment 属性源 StandardServletEnvironment.SERVLET_CONTEXT_PROPERTY_SOURCE_NAME StandardServletEnvironment.SERVL...原创 2020-08-21 23:40:16 · 256 阅读 · 0 评论 -
spring4.3.6源代码 - core - spring.schemas、spring.handlers的使用
"META-INF/spring.handlers" 文件的使用 // "META-INF/spring.handlers" 文件的使用 org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory() { // ... DefaultListableBeanFactory beanFactory = createBeanFactory(); // 创建bea...原创 2020-08-08 16:25:34 · 190 阅读 · 0 评论 -
spring4.3.6源代码 - core - 已知的设计模式
spring已知的设计模式 1、代理 org.springframework.aop.framework.JdkDynamicAopProxy#getProxy(java.lang.ClassLoader) { // ... return Proxy.newProxyInstance(classLoader, proxiedInterfaces, this); // ... } 2、visitor 定义 org.springframework.core.type.classre.原创 2020-08-08 11:51:45 · 169 阅读 · 0 评论 -
spring4.3.6源代码 - core - 循环依赖的处理
// 注册别名是检查循环依赖 org.springframework.core.SimpleAliasRegistry.registerAlias() { checkForAliasCircle(name, alias); // 检查别名注册循环依赖 } // 创建bean时检查循环依赖 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean() { if (sharedInstance !=...原创 2020-08-08 11:49:21 · 107 阅读 · 0 评论 -
spring4.3.6源代码 - tx - 命名空间处理器 & Processor
<tx:annotation-driven .../> 使用的是aop机制: ”advisor“、”拦截器“、”注解解析器“ <tx:annotation-driven transaction-manager="transactionManagerx" mode="proxy" /> 启动aop的功能,并注册aop的自定义Advisor对象到BeanDefinition容器 { 1、注册 TransactionalEventListenerFactor...原创 2020-08-06 22:06:56 · 167 阅读 · 0 评论 -
spring4.3.6源代码 - aop - 命名空间处理器 & Processor & 代理机制
注册 XxxAspectJAwareAdvisorAutoProxyCreator的时候有个优先级关系 APC_PRIORITY_LIST.add(InfrastructureAdvisorAutoProxyCreator.class); APC_PRIORITY_LIST.add(AspectJAwareAdvisorAutoProxyCreator.class); APC_PRIORITY_LIST.add(AnnotationAwareAspectJAutoProxy...原创 2020-08-05 19:35:22 · 272 阅读 · 0 评论 -
spring4.3.6源代码 - context - Processor
org.springframework.context.annotation.ConfigurationClassPostProcessor { 1、public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) { 1、获取所有 <已经注册的bean列表> 2、获取配置候选人 for(迭代所有 <已经注册的bean列表>) { if 如be...原创 2020-08-03 10:07:17 · 151 阅读 · 0 评论 -
spring4.3.6源代码 - core - Processor
会被自动识别,并计入beanFactory的三个特征接口 org.springframework.beans.factory.config.BeanPostProcessor org.springframework.beans.factory.config.BeanFactoryPostProcessor org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor ...原创 2020-07-30 20:06:41 · 82 阅读 · 0 评论 -
spring4.3.6源代码 - context - 命名空间处理器
<context:component-scan ... /> <context:component-scan ... /> org.springframework.context.config.ContextNamespaceHandler.parse(...) { org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(...) { 1、创建扫描器 ...原创 2020-07-30 19:13:56 · 166 阅读 · 0 评论 -
spring4.3.6源代码 - beans - bean的创建、销毁、BeanPostProcessor
case1:被InstantiationAwareBeanPostProcessor拦截 1、-- 调用实现InstantiationAwareBeanPostProcessor接口的hooker的postProcessBeforeInstantiation方法,创建并返回实例 2、-- 调用实现BeanPostProcessor接口的hooker的postProcessAfterInitialization方法 case2:没被InstantiationAwareBeanPostProce...原创 2020-07-30 20:03:19 · 164 阅读 · 0 评论 -
spring4.3.6源代码 - beans - Autowire(自动装配)
byName byType constructor autodetect原创 2020-07-25 16:02:38 · 125 阅读 · 0 评论 -
spring4.3.6源代码 - beans - Lifecycle的应用
1、编写实现Lifecycle接口的bean package cn.java.demo.beantag.lifecycle; import org.springframework.context.Lifecycle; /** * 不能自动启动 * @author zhouzhian */ public class FooOneLifecycle implements Lifecycle { boolean isRunning = false; @Override public void原创 2020-07-23 14:40:17 · 74 阅读 · 0 评论 -
spring4.3.6源代码 - beans - 属性值使用占位符[PropertyPlaceholderConfigurer]
1、编写配置文件 # classpath:/cn/java/demo/beantag/placeholder0.properties # beanPlaceholderTest0 \u7684\u52A8\u6001\u914D\u7F6E beanPlaceholderTest0.factoryMethod=getCreatedByFactoryBean beanPlaceholderTest0.scope=prototype beanPlaceholderTest0.constructor...原创 2020-07-23 14:35:14 · 107 阅读 · 0 评论 -
spring4.3.6源代码 - beans - 编写自己的scope[CustomScopeConfigurer]
1、编写自己的scope处理器 package cn.java.demo.beantag.customscope; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.a...原创 2020-07-23 14:25:18 · 406 阅读 · 0 评论 -
spring4.3.6源代码 - beans - 关于AbstractBeanDefinition的属性
isSynthetic属性 org.springframework.beans.factory.support.AbstractBeanDefinition#isSynthetic isSynthetic(表示硬编码创建的BeanDefinition) 如果一个BeanDefinition的synthetic属性被标记为true,那么这个bean在获取的过程中不会应用BeanPostProcessors scope属性 ...原创 2020-07-23 12:22:10 · 577 阅读 · 0 评论 -
spring4.3.6源代码 - core - XxxApplicationContext的refresh方法代码片段
《****** 关于hook的注入机制 ******》 org.springframework.context.support.ClassPathXmlApplicationContext org.springframework.web.context.support.XmlWebApplicationContext org.springframework.context.support.AbstractApplicationContext.refresh() { AbstractAp.原创 2020-07-22 20:30:26 · 154 阅读 · 0 评论 -
spring4.3.6源代码 - core - ClassPathXmlApplicationContext 实例化并刷新、启动、关闭
启动 ApplicationContext context = new ClassPathXmlApplicationContext("classpath:cn/java/demo/beantag/applicationContext.xml"); org.springframework.context.support.ClassPathXmlApplicationContext { org.springframework.context.support.ClassPathXml...原创 2020-07-22 20:26:04 · 309 阅读 · 0 评论 -
spring4.3.6源代码 - 开始
再回首,记忆已是3年前(2017),记得当时读了spring4.3.6 大部分“扩展”的源代码。收获颇多。现如今再看,已经颇感生疏,特此打算写系列博客以便记录。现spring已到5.2.x,虽版本差异较大,但自觉万变不离其宗。 spring-core、spring-beans、spring-context是其核心 ...原创 2020-07-22 20:14:55 · 103 阅读 · 0 评论