Spring源码解析 - IOC

概述

Spring中最核心的概念就是IOC和AOP,本篇文章记录的是我对Sprng中IOC的使用和理解。在观看源码一点点剖析的过程中去学习前人的编程思想,以帮助自己在未来程序开发过程中能取其精华,高效编程。阅读本文,在本质上并不能使你瞬间成为一个使用Spring的高手,不过对于日后学习并理解Spring有一定的帮助。

本文采用的源码版本是5.1.2.RELEASE,虽然目前主流的Spring开发项目都是基于Springboot以及Springboot的Java配置类去配置项目,基于xml配置的项目已经很少用了,但是为了简化对于Spring的理解,我们还是以加载xml配置的方式去分析,Spring项目在启动的过程中都做了哪些事情,在使用Spring的过程中是哪些组件间的配合帮我们完成对象的注入的。

期望在阅读本文后能让大家对阅读开源项目源代码感兴趣!

容器

配置Spring的maven依赖,因为spring-context依赖beans,core,aop,expression,所以倒导入context就相当于把它的依赖带入进来了。


  org.springframework
  spring-context
  5.1.2.RELEASE

启动一个Spring容器很简单示例如下:

/**
 * Create by Pinus Li on 2019-08-08
 */
public class RunSpringContainerTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
    }
}

上述代码的意思很简单,通过加载Spring配置文件,创建一个Sping容器的对象,使context引用指向这个容器的对象,这样就可以通过context来使用这个容器了。

引入Spring的项目会很少看见new这个关键词,使用new也仅仅是在方法的局部环境中做组装/拆分对象时会用到,关于业务接口的实现类对象、持久层接口的实现类对象、控制器的对象等都是在项目启动时Spring来创建和管理的。ClassPathXmlApplicationContext这个类,就是通过加载解析xml的内容来构建ApplicationContext(容器)的。除去ClassPathXmlApplicationContext还有其他类也可以创建Spring容器。

Spring源码解析 - IOC_第1张图片

FileSystemXmlApplicationContext基于xml文件的路径来加载Spring容器的,这个就类似于我们web项目在web.xml中配置了applicationContext.xml的路径,启动项目时Spring会加载这个配置文件,保证

 

你可能感兴趣的:(Spring全家桶)