自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 JVM(一)- 基本结构和总览

目录 1、内存自动管理 2、虚拟机执行子系统 3、JVM与多线程(或者高并发)的重合部分 4、调优实战、常用参数等 之前看完《深入理解Java虚拟机》第二版之后觉得收获很大,现在第三版都出来了,书更厚并且增加了很多Java8等的东西,比如成熟的G1垃圾收集器的东西。结合《实战Java...

2020-01-09 16:19:03 84 0

原创 @ControllerAdvice使用场景

目录 1、ExceptionHandler 2、InitBinder 3、ModelAttribute 在Spring MVC进行调用的过程中,会有很多的特殊的需求。比如全局异常,分页信息和分页搜索条件,请求时带来返回时还得回显页面。Spring提供@ControllerAdvice对...

2020-01-02 10:40:06 124 1

原创 SpringMVC源码(九)- ModelAndView(View为String类型)返回值的解析过程

目录 一、ModelAndView返回值的解析过程 1、适配返回值解析器并解析(handleReturnValue)-ModelAndViewMethodReturnValueHandler 2 、视图和数据处理(getModelAndView) 3、结果处理(processDispatc...

2019-12-31 17:28:42 83 0

原创 SpringMVC源码(八)- @ResponseBody方式的解析流程

目录 1、handleReturnValue(适配解析结果) 1)、selectHandler(适配返回值解析器-RequestResponseBodyMethodProcessor) 2)、handleReturnValue(解析返回结果) writeWithMessageConvert...

2019-12-31 14:52:25 171 0

原创 SpringMVC源码(七)- doDispatch - RequestMappingHandlerAdapter的handle(方法的调用)

目录 一、RequestMappingHandlerAdapter结构 1、完成ControllerAdvice注解相关初始化 2、各种类型的解析器站初始化 1)、argumentResolvers初始化: 2)、initBinderArgumentResolvers(数据绑定解析器列表...

2019-12-30 18:03:30 64 0

原创 SpringMVC源码(六)- doDispatch - getHandler获取HandlerExecutionChain(调用方法和拦截器链)

目录 getHandler 1、匹配HandlerMethod 1)、获取真实的请求路径 2)、匹配需要调用的具体方法封装的HandlerMethod createWithResolvedBean(没看懂) 2、匹配连接器链,组装返回HandlerExecutionChain对象 ...

2019-12-29 14:32:03 43 0

原创 SpringMVC源码(五)- doDispatch - getHandler的准备阶段(@RequestMapping解析注册)

目录 一、doDispatch的getHandler 1、RequestMappingHandlerMapping结构 2、setApplicationContext回调函数 3、afterPropertiesSet回调函数 1)、获取可能的类 2)、解析和注册 3)、递归查询所有的...

2019-12-27 17:47:33 35 0

原创 SpringMVC源码(四)- 常用HandlerMapping和HandlerAdaptor组合和使用方式

目录 一、HandlerMapping和HandlerAdaptor初始化(initStrategies) 二、常用的HandlerMapping和HandlerAdaptor组合 三、常用的Controller方式 1、RequestMappingHandlerAdapter 2、Ht...

2019-12-26 14:20:50 33 0

原创 SpringMVC源码(三)- DispatcherServlet请求分析

目录 一、service请求(servlet请求转换为Http请求) 二、doService请求(request中添加SpringMVC初始化的九大件信息) 三、doDispatch HandlerExecutionChain结构和HandlerInterceptor方法调用 一、ser...

2019-12-25 17:57:48 27 0

原创 SpringMVC源码(二)- DispatcherServlet结构和初始化

目录 1、DispatcherServlet结构 1)、GenericServlet 2)、HttpServlet 3)、HttpServletBean 4)、FrameworkServlet 5)、DispatcherServlet 2、DispatcherServlet初始化(九...

2019-12-25 11:38:17 35 0

原创 SpringMVC源码(一)- 总览 和 ContextLoaderListener监听启动WebApplicationContext

目录 一、SpringMVC总览 二、ContextLoaderListener的contextInitialized监听事件 1、创建Web类型的ApplicationContext 2、执行refresh方法 比如下web.xml配置文件的部分,方便下面的理解: <li...

2019-12-25 10:00:36 27 0

原创 Spring源码 - @Autowired原理分析(AutowiredAnnotationBeanPostProcessor)

目录 1、MergedBeanDefinitionPostProcessor#postProcessMergedBeanDefinition 2、#determineCandidateConstructors 3、InstantiationAwareBeanPostProcessor#pos...

2019-12-24 15:58:01 86 0

原创 Spring源码 - @Resource、@PostConstruct、@PreDestroy原理分析(CommonAnnotationBeanPostProcessor - 下)

目录 一、注解LifecycleMetadata的生命周期 1、findLifecycleMetadata(递归获取生命周期注解添加到容器) 2、invokeInitMethods 3、invokeDestroyMethods 二、注解InjectionMetadata的生命周期 1、...

2019-12-24 11:34:10 44 0

原创 Spring源码 - @Resource、@PostConstruct、@PreDestroy原理分析(CommonAnnotationBeanPostProcessor - 上)

目录 一、初始化 CommonAnnotationBeanPostProcessor的静态代码块初始化 CommonAnnotationBeanPostProcessor的无参数构造初始化 二、生命周期和回调时机 1、实现了BeanFactoryAware 2、继承自InitDestr...

2019-12-24 11:10:01 84 0

原创 SpringIoc源码(二十)- BeanFactory(九)- getBean(doCreateBean - initializeBean生命周期回调)

目录 1、Aware接口回调 2、BeanPostProcessor的postProcessBeforeInitialization方法回调 3、ApplicationContextAwareProcessor的postProcessBeforeInitialization 4、Initi...

2019-12-23 12:35:59 23 0

原创 SpringIoc源码(十九)- BeanFactory(八)- getBean(doCreateBean - populateBean属性填充)

目录 1、检查是否跳过属性填充 2、根据Autowire模式填充 1)、autowireByName 2)、autowireByType 3、InstantiationAwareBeanPostProcessor#postProcessProperties属性填充 4、检查depend...

2019-12-23 11:03:03 21 0

原创 SpringIoc源码(十八)- BeanFactory(七)- getBean(doCreateBean - createBeanInstance实例创建)

目录 1、Supplier方式创建对象 2、工厂方法创建对象 3、有参构造创建对象 4、无参构造创建对象 当创建Bean时,肯定是先通过反射创建该对象。只是Spring除了直接用反射实例化对象外还允许传入Supplier、或者设置factory-mtehod等方式。不论哪种方式初始化...

2019-12-20 16:55:23 27 0

原创 SpringIoc源码(十七)- BeanFactory(六)- getBean(doCreateBean总览)

目录 1、doCreateBean总览 2、将BeanDefinition转化为BeanWrapper 3、MergedBeanDefinitionPostProcessor回调 4、循环依赖实现 5、循环依赖检查 6、注册DisposableBean 1、doCreateBean总...

2019-12-20 10:56:02 30 0

原创 SpringIoc源码(十六)- BeanFactory(五)- getBean(doGetBean下 - doCreateBean前的准备工作)

目录 1、getSingleton 2、createBean 1)、获取真正的Class类型 2)、初始化真正使用的RootBeanDefinition 3)、lookup-method和replace-method的处理 4)、InstantiationAwareBeanPostPr...

2019-12-19 14:13:16 23 0

原创 SpringIoc源码(十五)- BeanFactory(四)- getBean(doGetBean上 - 缓存中获取)

目录 下面为非第一次getBean(已经初始化过一次),获取的最短路径 1、获取真实的BeanName(传入的可能是别名等) 1)、判断是否为获取FactoryBean 2)、 判断是否为别名 2、从缓存中获取实例(如果已经调用过getBean) 3、判断返回真正获取的对象 ...

2019-12-18 18:13:12 44 0

原创 SpringIoc源码(十四)- ApplicationContext(十)- refresh(finishRefresh和destroyBeans)

目录 一、finishRefresh 1、clearResourceCaches 2、initLifecycleProcessor 3、LifecycleProcessor的onRefresh 4、ContextRefreshedEvent 5、LiveBeansView.regist...

2019-12-17 16:50:46 28 0

原创 SpringIoc源码(十三)- ApplicationContext(九)- refresh(finishBeanFactoryInitialization)

目录 finishBeanFactoryInitialization 1、ConversionService 2、StringValueResolver属性替换 3、LoadTimeWeaverAware类型 4、freezeConfiguration(冻结BeanDifinition)...

2019-12-17 15:22:53 27 0

原创 SpringIoc源码(十二)- ApplicationContext(八)- refresh(initMessageSource)

目录 一、initMessageSource 二、initApplicationEventMulticaster 三、onRefresh 四、registerListeners 一、initMessageSource 国际化相关: protected void initMess...

2019-12-16 16:28:16 25 0

原创 Spring源码-@ComponentScan原理分析

目录 一、获取AnnotationAttributes属性并且解析 二、doScan 1)、轮训加载basePackage下的BeanDefinition 1、scanCandidateComponents 2、doFindPathMatchingFileResources 3、isC...

2019-12-16 15:02:45 31 0

原创 SpringIoc源码(十一)- ApplicationContext(七)- refresh(ConfigurationClassPostProcessor下)

目录 doProcessConfigurationClass(解析配置类) 1、@Component 2、@PropertySources、@PropertySource 3、@ComponentScans、@ComponentScan 4、@ImportSelector、@import...

2019-12-16 10:01:17 26 0

原创 SpringIoc源码(十)- ApplicationContext(六)- refresh(ConfigurationClassPostProcessor上)

目录 ConfigurationClassPostProcessor 1、获取所有注册的BeanDefinition 2、判断是否需要解析配置 1)、先获取AnnotationMetadata信息 2)、判断是否需要注解解析 3、排序 4、ConfigurationClassPars...

2019-12-12 17:20:06 35 0

原创 SpringIoc源码(九)- ApplicationContext(五)- refresh(invokeBeanFactoryPostProcessors和registerBeanPostProc)

目录 1、invokeBeanFactoryPostProcessors 2、registerBeanPostProcessors 1)、registerBeanPostProcessors 2)、ApplicationListenerDetector 1、BeanPostProcess...

2019-12-11 14:43:08 44 0

原创 SpringIoc源码(八)- ApplicationContext(四)- refresh(postProcessBeanFactory)

目录 postProcessBeanFactory 1、AbstractRefreshableWebApplicationContext 1)、ServletContextAwareProcessor 2)、registerWebApplicationScopes 3)、register...

2019-12-05 18:04:16 25 0

原创 SpringIoc源码(七)- ApplicationContext(三)- refresh(prepareBeanFactory)

目录 prepareBeanFactory 1)、设置BeanFactory类加载器 2)、设置Spring Expression解析器 StandardBeanExpressionResolver 3)、ResourceEditorRegistrar 4)、ApplicationCo...

2019-12-03 21:06:19 28 0

原创 SpringIoc源码(六)- ApplicationContext(二)- refresh(obtainFreshBeanFactory和StandardEnvironment)

目录 1、StandardEnvironment 1)、PropertyResolver(Property相关处理) 2)、Environment(Spring profiles相关处理) 3)、ConfigurablePropertyResolver(类型转换相关ConversionSe...

2019-12-03 16:56:30 49 0

原创 SpringIoc源码(五)- ApplicationContext(一)- 结构梳理

目录 一、ApplicationContext 1、接口方法 2、实现接口 1)、EnvironmentCapable 2)、ListableBeanFactory 3)、HierarchicalBeanFactory 4)、MessageSource 5)、Application...

2019-12-02 19:24:13 57 0

原创 SpringIoc源码(四)- BeanFactory(三)- 自定义标签实现和分析

目录 1、自定义标签实现 1)、定义Bean 2)、spring.handlers 3)、spring.schemas 3)、Spring Xml配置文件 4) 、测试 2、自定义标签实现分析 1)、获取NamespaceHandler 2)、获取自定义的解析器(Abstract...

2019-11-26 20:19:03 28 0

原创 SpringIoc源码(三)- BeanFactory(二)- XmlBeanFactory注册BeanDefinition

目录 1、loadBeanDefinitions 2、doLoadDocument 1)、DocumentBuilderFactory 2)、createDocumentBuilder 3)、parse(解析Xml) 3、registerBeanDefinitions 1)、impo...

2019-11-26 14:38:27 21 0

原创 SpringIoc源码(二)- BeanFactory(一)- 结构梳理(DefaultListableBeanFactory)

目录 一、接口 1、BeanFactory 1)、FACTORY_BEAN_PREFIX 2)、ObjectProvider 3)、ResolvableType 2、AliasRegistry 3、BeanDefinitionRegistry 3、SingletonBeanRegi...

2019-11-26 10:14:59 23 0

原创 SpringIoc源码(一)- 总览

目录 一、BeanFactory 1)、注册BeanDefinition 2)、getBean 二、ApplicationContext 三、Spring MVC 四、Spring Boot 总览:Ioc是Spring的一切的基础,而BeanFactory又是Ioc的基础。 1、B...

2019-11-25 18:16:02 31 0

原创 SpringAop源码(七)- 嵌套调用问题分析与解决

目录 一、本类嵌套Aop问题分析 二、本类嵌套Aop问题解决 1、依赖注入自己 2、BeanFactoryAware(或者ApplicationContextAware) 3、exposeProxy设置为true 之前分析了整个Aop的实现原理和流程。Spring框架的Transa...

2019-11-25 15:10:06 24 0

原创 SpringAop源码(六)- 标签aspectj-autoproxy实现分析

目录 1、自定义标签、解析器的加载和调用时机 2、AspectJAutoProxyBeanDefinitionParser 3、总结 1、自定义标签、解析器的加载和调用时机 之前分析过EnableAspectJAutoProxy方式启动Spring Aop的整个代理过程,当前在这之前...

2019-11-24 11:03:28 43 0

原创 SpringAop源码(五)- EnableAspectJAutoProxy实现原理(调用)- invoke或者intercept(代理方法执行)

目录 一、invoke实现 1)、getInterceptorsAndDynamicInterceptionAdvice 1、MethodBeforeAdviceInterceptor 2、AfterReturningAdviceInterceptor 3、ThrowsAdviceInt...

2019-11-24 02:32:22 35 0

原创 SpringAop源码(四)- EnableAspectJAutoProxy实现原理(下)- createProxy

目录 一、buildAdvisors 二、proxyFactory.getProxy 1、createAopProxy 1)、DefaultAopProxyFactory 2)、AopProxy 2、getProxy 三、createProxy总结: 四、Aop总结: 先梳理一下...

2019-11-22 12:47:30 65 0

原创 SpringAop源码(三)- EnableAspectJAutoProxy实现原理(中)- getAdvicesAndAdvisorsForBean

目录 一、findAdvisorBeans获取所有可用的切面 二、findAdvisorsThatCanApply从所有切面中获取可用的切面 1)、父类中findAdvisorsThatCanApply 2)、本类中 buildAspectJAdvisors 1、BeanFactory中...

2019-11-22 12:47:27 186 0

提示
确定要删除当前文章?
取消 删除