查看原文
其他

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

大咖笔记 2022-08-09

摘要:本文结合《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

公众号“大咖笔记”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!

------ THE END ------

精品资料,超赞福利!


3000+ 道 BAT 大厂面试题在线刷,最新、最全 Java 面试题!

期往精选  点击标题可跳转

Spring 框架中解决循环依赖的 3 种方式,值得一看!

放弃 JDK8 中 StringBuilder,使用 StringJoiner 辅助类,真香!

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

Spring Boot 集成 WebSocket,实现前后端即时通讯,如此简单!

Spring Boot 项目不同环境打包配置与Shell脚本部署实践,太实用了!

JWT token 过期后自动续期的解决方案

 技术交流群!

最近有很多人问,有没有读者交流群!想知道如何加入?方式很简单,兴趣相投的朋友,只需要点击下方卡片,回复“加群”,即可无套路入交流群!

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存