Spring 源码分析(二)容器基本用法(系列文章基于Spring 5.0)

摘要:本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。

在正式分析Spring源码之前,我们有必要先来回顾一下Spring中最简单的用法。尽管我相信您已经对这个例子非常熟悉了。

Bean是Spring中最核心的概念,因为Spring就像是个大水桶,而Bean就像是水桶中的水,水桶脱离了水也就没什么用处了,那么我们先看看Bean的定义。

public class MySpringBean {
    private String str = "mySpringBean";

    public String getStr() {
        return str;
    }

    public void setStr(String str) {
        this.str = str;
    }
}

很普通,Bean没有任何特别之处。的确,Spring的目的就是让我们的Bean能成为一个纯粹的POJO,这也是Spring所追求的。接下来看看配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="mySpringBean" class="org.cellphone.uc.MySpringBean"/>
</beans>

在上面的配置中我们看到了Bean的声明方式,接下来看测试代码:

public class BeanFactoryTest {

    @Test
    public void testSimpleLoad() {
        BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring/spring-test.xml"));
        MySpringBean bean = (MySpringBean) beanFactory.getBean("mySpringBean");
        Assert.assertEquals("testSimpleLoad", "mySpringBean", bean.getStr());
    }
}

XmlBeanFactory从Spring 3.1版本开始就被废弃了,但源码中未说明废弃的原因......

直接使用BeanFactory作为容器对于Spring的使用来说并不多见,因为在企业级的应用中大多数都会使用ApplicationContext(后续再介绍两者之间的差异),这里只是用于测试,让读者更快更好地分析Spring的内部原理。

通过上面一行简单的代码就拿到了MySpringBean实例,但这行代码在Spring中却执行了非常多的逻辑。接下来就来深入分析BeanFactory.getBean方法的实现原理。

作者:写出高级BUG

cnblogs.com/warehouse/p/9373466.html

往期精选  点击标题可跳转

微软公司将不兼容 IE 的网站自动重定向至 Edge 浏览器

面试官问:MyBatis 日志如何做到兼容所有常用的日志框架?

为什么很多公司强制弃坑 Fastjson 了?主推 Jackson

MySQL 中 delete、truncate、drop 关键字的区别有哪些,该如何选择?

Spring 最常用的 7 大类注解,哪些你还不知道?

Spring Boot 项目中如何更规范的使用 PageHelper 分页插件?

如何实现 MySQL 中通过SQL语句删除重复记录并且只保留一条记录

面试必问:Redis 持久化是如何做的?RDB 和 AOF 对比分析

Spring Boot 集成 Quartz 实现定时任务的动态创建、启动、暂停、恢复、删除等操作

IntelliJ IDEA 15款 神级超级牛逼插件推荐(自用,真的超级牛逼)

点个赞,就知道你“在看”!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值