故事背景:一座神秘的工厂
在一个遥远的国度,有一座神秘的工厂——Spring工厂。这座工厂能够制造出各种神奇的工具和机器,帮助居民解决各种问题。工厂的管理者是一位叫作Spring的巫师,他掌握着制造这些工具的独门秘籍。
1. 需求分析:居民的需求
一天,镇上的居民们来到Spring工厂,向Spring巫师提出了需求:“我们需要一些特殊的工具,来帮助我们进行日常工作。”
Spring巫师听取了大家的需求,并开始思考如何制造这些工具。每个工具都是独一无二的,必须按照居民的要求精心打造。巫师决定使用他的魔法来帮助他实现这个目标,而这些魔法的核心就是Bean。
2. 创建配方:配置文件和注解
为了制造工具,Spring巫师需要一个详细的配方,这个配方就是我们所说的配置文件或注解。
- 配置文件:在古老的时代,Spring巫师使用卷轴(XML文件)记录下所有工具的配方。在卷轴中,他详细列出了工具的名称、材质、功能等信息。
- 注解:后来,巫师发现了一种更为简便的方式。他直接在工具的设计图(Java类)上标记了关键的信息。通过这些注解,巫师能够迅速了解如何制造这些工具。
举例:
@Component
public class Hammer {
// Hammer's properties and methods
}
在这个例子中,Spring巫师在锤子的设计图上标记了@Component
注解,告诉工厂这个工具需要被制造出来。
3. 工厂的运作:Bean的创建过程
一切准备就绪后,Spring工厂开始运作。
3.1. 扫描工厂:寻找设计图
工厂的第一步是扫描所有的设计图(Java类)。Spring巫师让他的助手——ClassPathScanning精灵去寻找那些标记了特殊符号(如@Component
、@Service
等)的设计图。
3.2. 制作工具:实例化Bean
一旦找到合适的设计图,Spring工厂就会启动生产线,开始制造工具。这个过程被称为实例化Bean。
- 实例化(Instantiation):工厂使用魔法(Java反射机制)来制造工具的实体。这就像在工厂中将原材料组装成最终产品。
Hammer hammer = new Hammer();
3.3. 赋予灵魂:依赖注入
工具制造完成后,Spring巫师还会赋予它们“灵魂”,让它们能够真正工作。这一步骤被称为依赖注入(Dependency Injection)。
- 属性注入:Spring工厂会为工具注入必要的组件,比如为锤子注入它的把手和锤头。
@Autowired
private Handle handle;
- 构造函数注入:巫师也可能在工具创建时直接注入必要的组件。
public Hammer(Handle handle) {
this.handle = handle;
}
4. 检查工具:Bean的生命周期
在工具正式交付给居民之前,Spring巫师会对每个工具进行一系列检查,确保它们能够正常工作。
4.1. 初始化
工具在交付之前,Spring巫师会调用一个特殊的魔法咒语——@PostConstruct
,进行最后的初始化。
@PostConstruct
public void init() {
// Perform any initialization tasks here
}
4.2. 使用与销毁
当工具完成了它的使命后,巫师还会调用另一个咒语——@PreDestroy
,来安全地销毁它们,确保资源得到正确释放。
@PreDestroy
public void cleanup() {
// Cleanup resources before destruction
}
5. 工具上架:将Bean交付给居民
经过一系列的流程,工具终于可以上架了。这些Bean被存放在一个神秘的仓库中——Spring容器。每当居民需要某个工具时,他们只需向Spring工厂提交请求,工厂就会从容器中取出这个工具交给他们。
总结
Spring工厂的整个过程从需求分析开始,通过配置文件和注解制定生产配方,扫描设计图、实例化工具、注入依赖,最终将制造好的工具交付给居民使用。每个Bean在整个生命周期中都经历了严格的控制和管理,确保它们能够以最佳状态为居民服务。
通过这个故事,你可以清晰地了解Spring创建Bean的过程,它包括了配置、扫描、实例化、依赖注入、生命周期管理等多个步骤,每一步都至关重要。
看完之后再看看自己收藏的博客就容易理解了
https://blog.csdn.net/weixin_38405253/article/details/110152309