spring源码解析-开篇

spring源码解析-开篇

做javaweb接触最多的框架莫过于spring了,随着对框架使用的逐渐熟练要再上一层的话,必须了解框架底层的实现原理,乃至自己做一个框架

spring的两大核心支柱:IOC和AOP

我们先从IOC开始入手

基于spring4.3.2源码分析

什么是IOC

IOC即”控制反转”,不是什么技术,而是一种设计思想.ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制.

简单的用代码表示就是

//原来方式
User user=new User();
//IOC获取实例
User user = (User) factory.getBean("user");

IOC容器设计图

spring源码解析-开篇_第1张图片
来自spring技术内幕

从图上可以看到BeanFactory是最顶层的接口,在spring中所有的Bean都由BeanFactory管理,BeanFactory里面包括的IOC最基本的方法比如getBean,其子接口在其基础上细化了更多的功能,比如AutowireCapableBeanFactory这个容器中就添加了创建Bean和初始化Bean等方法

编程式使用IOC

开始分析源码前先使用编程式使用IOC用于调试,使用编程式而没有采用常用的注解,是因为编程式可以很清晰的看出IOC其关键类和基本的流程

        //定位resource
        ClassPathResource res = new ClassPathResource("spring-mvc.xml");
        //创建工厂
        DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
        //选择资源读取器
        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
        //读取资源,并将结果放入工厂
        reader.loadBeanDefinitions(res);
        //获取对象
        User user = factory.getBean("user", User.class);

IOC基本流程

spring源码解析-开篇_第2张图片
IOC基本流程

后面的文章将会对这几个步骤分别分析,了解spring是如何实现IOC的

你可能感兴趣的:(spring源码解析-开篇)