自学内容网 自学内容网

Springboot的Bean管理

Bean的介绍

Spring Boot 是一个基于 Spring 框架的项目,它简化了基于 Spring 的应用开发,提供了一系列的“约定大于配置”的特性。在 Spring Boot 中,Bean 是由 Spring 容器管理的对象,它们是构成应用程序的主体。

以下是 Spring Boot 中 Bean 的一些核心概念:

  1. Bean 的定义

    • 在 Spring 框架中,Bean 是那些组成应用程序的主要组件,它们由 Spring 容器实例化、配置和管理。Bean 是通过 Spring 框架的 IoC(控制反转)容器进行管理的对象。
  2. Bean 的作用域

    • Singleton:默认作用域,每个 Spring IoC 容器中只会创建一个 Bean 实例。
    • Prototype:每次请求都会创建一个新的 Bean 实例。
    • Request:每个 HTTP 请求都会创建一个新的 Bean,仅适用于 Web 应用程序。
    • Session:在一个 HTTP Session 中,一个 Bean 定义对应一个实例。
    • Application:在ServletContext的生命周期内,一个 Bean 定义对应一个实例,仅适用于 Web 应用程序。
    • WebSocket:在 WebSocket 握手请求中,一个 Bean 定义对应一个实例。
  3. Bean 的生命周期

    • 实例化:Spring 容器使用 Bean 的构造函数或工厂方法创建 Bean 实例。
    • 属性赋值:Spring 容器为 Bean 设置属性,这些属性可能是其他 Bean 的引用。
    • BeanNameAware、BeanFactoryAware:如果 Bean 实现了这些接口,Spring 容器会调用它们的相应方法。
    • InitializingBean:如果 Bean 实现了 InitializingBean 接口,Spring 容器会调用 afterPropertiesSet() 方法。
    • init-method:如果 Bean 定义了 init-method 属性,Spring 容器会调用该方法。
    • 使用 Bean:完成上述步骤后,Bean 就准备好被应用程序使用了。
    • DisposableBean:当 Bean 不再需要时,如果 Bean 实现了 DisposableBean 接口,Spring 容器会调用其 destroy() 方法。
    • destroy-method:如果 Bean 定义了 destroy-method 属性,Spring 容器会调用该方法。
  4. Bean 的配置

    • Bean 可以通过 XML 配置文件、注解(如 @Component@Service@Repository@Controller)或 Java 配置类来声明。
    • 在 Spring Boot 中,通常使用注解方式来声明 Bean,因为这种方式更简洁。
  5. 自动装配(Autowiring)

    • Spring 容器可以自动装配 Bean 之间的依赖关系,这是通过注解(如 @Autowired)或 XML 配置来实现的。
  6. Bean 的作用

    • Bean 是实现业务逻辑的核心,它们可以是服务、数据访问对象(DAO)、控制器(Controller)等。

在 Spring Boot 应用中,Bean 的管理是自动的,开发者只需要关注业务逻辑的实现,而不需要关心对象的创建和管理。这种机制极大地简化了开发过程,提高了开发效率。

比喻版

想象一下,你正在经营一家餐厅,这家餐厅就像是一个 Spring Boot 应用。在餐厅中,你需要各种各样的角色来保证餐厅的正常运转:

  1. Bean 的定义

    • 每个角色(服务员、厨师、收银员等)都可以看作是一个 Bean。他们都是餐厅运作的重要组成部分,每个角色都有特定的职责。
  2. Bean 的作用域

    • Singleton:就像餐厅的经理,无论有多少顾客,都只有一个经理负责整个餐厅的运营。
    • Prototype:每一批新来的顾客可能需要一个新的菜单(Prototype Bean),用完就丢弃。
    • Request:每个顾客的点餐请求(Request Bean)都是独一无二的,每个请求都需要特别的关注。
  3. Bean 的生命周期

    • 就像餐厅员工的一天,从他们到达餐厅(实例化),穿上制服(属性赋值),到开始工作(初始化),最后下班离开(销毁)。
  4. Bean 的配置

    • 就像餐厅的招聘广告,你可以在报纸上发布(XML 配置),或者在门口贴一个招聘启事(注解),甚至是通过口碑相传(Java 配置类)。
  5. 自动装配(Autowiring)

    • 就像餐厅的新员工,他们不需要自己去找其他部门的同事合作,餐厅经理(Spring 容器)会自动安排他们与其他员工(Bean)的合作。
  6. Bean 的作用

    • 每个员工(Bean)都有自己的工作,他们共同确保餐厅的顺利运营。服务员负责接待顾客,厨师负责烹饪,收银员负责结账。

在这个餐厅比喻中,Spring Boot 就像是一个高效的餐厅管理系统,它确保每个角色都能在正确的时间、正确的地点做正确的事情,而不需要你亲自去管理每一个细节。这样,你就可以专注于提供更好的服务和食物,而不是被日常的管理琐事所困扰。

Bean的扫描

在spring中,需要添加以下注解,给具体的路径才能扫描到bean

但springboot却不用指定路径,为什么?

因为SpringBootApplication本质上是一个组合注解,里面包含@ComponentScan,如果不写具体扫描路径,就会扫描当前类所在包,及其所有子包。

扫描范围如下。如果在com.example.test 05包外,启动类就扫描不到了(但一般也没人这么写)

Bean注册

涉及到第三方bean注册,感觉暂时用不到,先不学了


原文地址:https://blog.csdn.net/clmm_/article/details/144402496

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!