当前位置: 首页 > article >正文

Spring 创建对象的流程

1. 故事背景

想象一下,你是一个老板,要开一家公司。公司里有很多员工(对象),每个员工都有自己的职责和依赖关系(比如,程序员需要电脑,销售需要电话等)。传统方式是你自己手动去安排每个员工的工作和工具,但在 Spring 的世界里,有一个超级助手(Spring 容器)帮你搞定这一切。


2. 第一步:告诉助手你需要哪些员工

你需要告诉 Spring 助手,你的公司需要哪些员工,以及他们的职责和依赖关系。你可以通过以下方式告诉助手:

  • 写一张清单(XML 配置文件):比如,“我需要一个程序员,他需要一台电脑。”
  • 贴标签(注解):比如,在程序员身上贴一个标签,写上“这是程序员,他需要电脑。”
  • 口头交代(Java 配置类):比如,直接告诉助手,“帮我招一个程序员,给他配一台电脑。”

3. 第二步:助手开始工作

助手(Spring 容器)拿到你的需求后,开始干活:

  1. 解析需求:助手会仔细阅读你的清单、标签或口头交代,弄清楚每个员工的具体信息。
  2. 招人(创建对象)
    • 如果员工是单例(Singleton),助手只会招一个人,并且让这个人一直工作,直到公司关门。
    • 如果员工是原型(Prototype),助手每次需要的时候都会招一个新的人。
  3. 配工具(依赖注入)
    • 助手会根据员工的需求,给他们配好工具。比如,程序员需要电脑,助手就会把电脑(依赖对象)交给他。
    • 工具可以通过以下方式交给员工:
      • 构造函数:助手在招人的时候,直接把工具塞到员工手里。
      • Setter 方法:助手招到人后,通过一个方法把工具交给员工。
      • 直接塞(字段注入):助手悄悄把工具放到员工的办公桌上。
  4. 培训(初始化)
    • 如果员工需要培训(比如程序员需要学习新技术),助手会安排培训(调用初始化方法)。

4. 第三步:员工开始工作

招到人并配好工具后,员工就可以开始工作了。你可以随时调用这些员工来完成公司的任务。


5. 第四步:公司关门(销毁)

当公司关门时,助手会通知所有员工收拾东西离开(调用销毁方法),比如程序员要把电脑还回去。


6. 总结

用一句话概括 Spring 创建对象的流程:
你告诉 Spring 需要哪些对象(Bean)以及它们的依赖关系,Spring 负责创建这些对象、给它们注入依赖、初始化它们,并在不需要的时候销毁它们。


举个例子

假设你有一个 UserService(用户服务),它需要一个 UserDao(用户数据访问对象)来操作数据库。你可以这样告诉 Spring:

  1. XML 配置
    <bean id="userService" class="com.example.UserService">
        <property name="userDao" ref="userDao"/>
    </bean>
    <bean id="userDao" class="com.example.UserDao"/>
    
  2. 注解配置
    @Service
    public class UserService {
        @Autowired
        private UserDao userDao;
    }
    
    @Repository
    public class UserDao {}
    

Spring 会:

  1. 创建 UserDao 对象。
  2. 创建 UserService 对象,并把 UserDao 交给它。
  3. 初始化 UserService,让它准备好工作。

http://www.kler.cn/a/563399.html

相关文章:

  • apache-maven-3.2.1
  • LeetCode热题100- 最小栈【JavaScript讲解】
  • RMII(Reduced Media Independent Interface)详解
  • Java Junit框架
  • libwebsockets交叉编译全流程
  • go-基础笔记
  • 基于SpringBoot+mybatisplus+vueJS企业数据保护系统设计与实现
  • 关于在java项目部署过程MySQL拒绝连接的分析和解决方法
  • MongoDB#常用语句
  • OpenCV开源机器视觉软件
  • 计算机毕业设计SpringBoot+Vue.js车辆管理系统(源码+文档+PPT+讲解)
  • AGI的三重架构假说:模块化认知系统设计——通向通用人工智能的工程化路径
  • 阿里重磅模型深夜开源;DeepSeek宣布开源DeepGEMM;微软开源多模态AI Agent基础模型Magma...|网易数智日报
  • HTTP与网络安全
  • 阻抗和电阻
  • 浅析 Redis 分片集群 Cluster 原理、手动搭建、动态伸缩集群、故障转移
  • 【自学笔记】Vue基础知识点总览-持续更新
  • flutter boost接入
  • go 查看版本
  • 【算法通关村 Day12】字符串