Spring实例化bean之源码分析

1 实例化bean的主流程 这张图是整体的bean的实例化的流程,我之前关于Spring的生命周期的加载bean和实例化bean的整体过程已有博文,可以 查看文章:Spring之Bean加载-解析-生命周期 调试入口 本文中的Spring源码基于3.2.x版本,为最精简的Spring源码,选取Spring自带的测试用例进行debug调试, 本文只关注单例对象的实例化bean中各组件的源码分析, 入口如下: @Test public void testConfigLocationPattern() { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(CONTEXT_WILDCARD); assertTrue(ctx.

Spring之动手实现SpringMVC功能

1 简介 SpringMVC大家应该耳熟能详,只要是做Java网站开发的小伙伴,都会使用的框架。SpringMVC以 DispatcherServlet 为核心,负责协调和组织不同组件以完成请求处理并返回响应的工作,实现了MVC模式。接下来我们从 该框架的流程 来整理设计思路,最后自己实现一个mvc框架. 2 SpringMVC运行流程 springmvc的流程如下: API说明 _DispatcherServlet_: Spring提供的前端控制器,所有的请求都有经过它来统一分发。在DispatcherServlet将请求分发给Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。

Spring之动手实现IOC功能

1 背景 我们经常在使用Spring生态中的组件,我们在潜移默化的DI和IOC的思想下,来创建和使用Bean对象,使用过 @Component @ComponentScan @Autowired @Bean @Configuration 等等的注解,所以了解Spring容器是如何创建和管理Bean,是我们必需掌握的技能。 下面我们通过手写DI和IOC的方式来加深对Spring的理解。 #2 依赖注入 DI,Dependency Injection,即依赖注入。具体含义表示组件之间的依赖关系由容器在应用系统运行期来决定,也就是由容器动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中。对象只提供普通的方法让容器去决定依赖关系。

Spring之Bean加载-解析-生命周期

1 概要 使用Spring框架,我们需要了解Bean的创建加载过程,需要熟悉Bean是如何获取和使用的。 下面我们通过分析下Spring加载XML文件的过程来分析Bean的数据流。 当前调试的Spring 版本是最新的 4.1.0 release 版本 调试代码主入口 ApplicationContext context = new ClassPathXmlApplicationContext("consumer.