尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Spring Boot 笔记

Spring Boot 笔记
📅 发布时间:2026/6/18 8:13:45
Spring Boot 笔记

@Autowired

@Autowired 是 Spring 框架中的一个注解,用于自动注入依赖对象。它可以在 Spring 容器启动时,自动将一个类的实例注入到另一个类中,避免手动创建对象。具体来说:

  • 自动注入:当 Spring 管理的 bean 被标记为 @Autowired 时,Spring 会尝试通过类型或者名称自动将所需的依赖对象注入到该类的字段、构造函数或 setter 方法中。

  • 使用场景:

    • 字段注入:直接在字段上使用 @Autowired 注解,Spring 会自动为该字段赋值。
    • 构造器注入:在构造器上使用 @Autowired 注解,Spring 会自动将所需的依赖项注入到构造器中。
    • Setter注入:在 setter 方法上使用 @Autowired 注解,Spring 会自动调用该方法并注入依赖。

@Autowired 通常与 Spring 的 IoC (Inversion of Control) 容器一起使用,通过自动化管理对象的生命周期和依赖关系,简化开发过程。

例子:

java
@Component
public class Car {private Engine engine;@Autowiredpublic Car(Engine engine) {this.engine = engine;}
}@Component
public class Engine {// Engine class implementation
}

在这个例子中,Spring 会自动为 Car 类的构造函数注入一个 Engine 对象,无需手动创建。

 

Spring

Spring容器是Spring框架中的核心概念之一,负责管理对象的生命周期、依赖关系、配置以及对象的创建和销毁。它的主要作用是实现控制反转(IoC,Inversion of Control),使得应用程序中的对象不再由程序员手动创建,而是由Spring容器自动管理。

Spring容器的作用:

  1. 依赖注入(DI):Spring容器自动将需要的依赖对象注入到应用程序的各个组件中。通过这种方式,类之间的依赖关系得到了很好的解耦。

  2. 对象管理:Spring容器负责对象的创建、配置、生命周期管理,确保程序中需要的对象能够按需提供。

  3. 对象的生命周期管理:Spring容器负责初始化bean对象,维护其生命周期,并在需要时销毁这些对象。

容器的工作原理:

  • Bean定义和配置:Spring容器首先读取配置文件(如XML、Java配置类或者注解配置),从中获取所有bean的定义。
  • 依赖注入:容器根据bean的配置来实例化对象,并为这些对象注入所需的依赖关系。
  • Bean的作用域:Spring支持多种作用域,例如单例(singleton)和原型(prototype),容器可以根据作用域规则来管理bean的生命周期。

常见类型的Spring容器:

  1. BeanFactory:最基本的容器,提供了简单的bean管理功能。
  2. ApplicationContext:BeanFactory的扩展,提供了更多的功能,比如国际化支持、事件传播、AOP等。

Spring容器的工作流程:

  1. 配置:定义和配置bean。
  2. 初始化:通过容器实例化bean,并注入所需的依赖。
  3. 使用:应用程序通过容器获取bean,并使用这些bean来完成所需的任务。
  4. 销毁:在容器关闭时,Spring会调用bean的销毁方法(如果有定义)。

总的来说,Spring容器通过管理对象和它们之间的依赖关系,大大简化了开发中的对象创建和管理过程,提高了系统的可维护性和扩展性。

 

 

Bean

在 Spring 框架中,Bean 是 Spring 容器管理的对象。具体来说,Bean 是一个由 Spring 容器实例化、组装、管理的类的实例。Spring 使用 IoC(控制反转)容器来管理 Bean 的生命周期、依赖注入、作用域等。简而言之,Bean 就是 Spring 容器中的一个对象,它可以是任何你想要由容器管理的类的实例。

Bean 的特点

  1. 由容器管理:Spring 容器负责 Bean 的创建、配置、初始化和销毁。
  2. 依赖注入:Spring 容器会根据配置将依赖对象注入到 Bean 中,使得对象之间的耦合度降低。
  3. 生命周期管理:Spring 管理 Bean 的整个生命周期,包括初始化、使用和销毁过程。

如何定义 Bean

  1. 通过注解:可以使用 @Component、@Service、@Repository、@Controller 等注解将类标记为 Bean,这样 Spring 就会自动将它们注册为 Bean,并将其管理。

    java
    @Component
    public class Car {private Engine engine;@Autowiredpublic Car(Engine engine) {this.engine = engine;}
    }
  2. 通过 XML 配置:在 Spring 配置文件中手动定义 Bean。

    xml
    <bean id="car" class="com.example.Car"><constructor-arg ref="engine"/>
    </bean>
  3. 通过 Java 配置类:使用 @Configuration 和 @Bean 注解来定义 Bean。

    java
    @Configuration
    public class AppConfig {@Beanpublic Car car() {return new Car(engine());}@Beanpublic Engine engine() {return new Engine();}
    }

Bean 的作用域

Spring 支持多种作用域来管理 Bean 的生命周期,常见的作用域有:

  1. singleton(默认作用域):Spring 容器在启动时创建一个 Bean 的实例,并在整个容器生命周期内共享该实例。
  2. prototype:每次从容器中获取 Bean 时,都会创建一个新的 Bean 实例。
  3. request:在一个 HTTP 请求内共享 Bean(仅在 Web 环境中有效)。
  4. session:在一个 HTTP 会话内共享 Bean(仅在 Web 环境中有效)。
  5. globalSession:在一个全局 HTTP 会话内共享 Bean(仅在 Web 环境中有效)。

Bean 的生命周期

Spring Bean 的生命周期包括以下几个阶段:

  1. 实例化:容器根据配置创建 Bean 实例。
  2. 依赖注入:Spring 会注入所有声明的依赖关系,确保 Bean 完整。
  3. 初始化:如果 Bean 实现了 InitializingBean 接口或在配置中指定了初始化方法,Spring 会在 Bean 完成依赖注入后执行初始化方法。
  4. 使用:应用程序使用已初始化的 Bean。
  5. 销毁:在容器关闭时,如果 Bean 实现了 DisposableBean 接口或在配置中指定了销毁方法,Spring 会调用销毁方法。

Bean 的示例

java
@Component
public class Car {private String model;@Autowiredprivate Engine engine;// Constructor, Getters, Setters
}

在这个示例中,Car 类是一个 Spring Bean,它有一个 Engine 依赖,Spring 会自动注入这个依赖(如果 Engine 也是一个 Spring 管理的 Bean)。

总结

  • Bean 是 Spring 容器管理的对象。
  • 定义 Bean 可以通过注解、XML 或 Java 配置类。
  • Spring 容器管理 Bean 的生命周期和依赖注入。
  • 你可以控制 Bean 的作用域来决定它的生命周期。

相关新闻

  • 使用通义灵码快速生成换装、瘦身程序 #Qwen3-Coder挑战赛# - yi
  • 软件工程第一次作业-tanglei
  • xtrabackup 8.0日常管理

最新新闻

  • 2026年比较好的黄山化粪池管道疏通/附近管道疏通/黄山管道疏通专业公司推荐 - 品牌宣传支持者
  • 2026年诚信的四川冷链运输包装/成都纸塑包装/四川包装/成都水果包装长期合作厂家推荐 - 行业平台推荐
  • 【流形学习多模态语言变量分析基础】王阳明代数讲义之解释深度幻觉
  • 基于深度学习的YOLOv8的微表情识别 表情检测 微表情识别
  • Java并发编程原理精讲:CAS与Atomic原子操作详解
  • 追番神器,比B站好用的动漫看番网站,免费无广!

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号