bean的管理-01.bean的获取

devtools/2025/2/28 8:46:22/

一.获取bean 

在默认情况下,Spring项目启动时,会将bean都创建好放在IOC容器中,我们可以通过@Autowired注解将所需要的bean对象注入进来,其实也可以通过Spring给我们提供的这些方法主动从IOC容器中获取bean对象。那么如何从IOC容器中主动获取bean对象呢?

java">package com.gjw.springbootwebconfig2;import com.example.HeaderConfig;
import com.example.HeaderGenerator;
import com.example.HeaderParser;
import com.example.TokenParser;
import com.gjw.controller.DeptController;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;@SpringBootTest
class SpringbootWebConfig2ApplicationTests {@Autowiredprivate ApplicationContext applicationContext;      // 获取IOC容器对象@Testvoid contextLoads() {}// 测试获取IOC容器中的bean对象的三种方法@Testvoid getBeanObjectTest() {// 1.   根据名称获取bean对象DeptController bean1 = (DeptController) applicationContext.getBean("deptController");       // 没有特别指定bean对象名称,默认类名小写  根据名称获取的默认为Object类型,要强转System.out.println(bean1);// 2.   根据类型获取bean对象DeptController bean2 = applicationContext.getBean(DeptController.class);System.out.println(bean2);// 3.   根据类型+名称获取bean对象DeptController bean3 = applicationContext.getBean("deptController", DeptController.class);System.out.println(bean3);}
}

 我们要想从IOC容器中主动获取bean对象,首先要拿到IOC容器,那么如何拿到IOC容器呢?我们可以使用@Autowired注入一个ApplicationContext类型的对象applicationContext,该对象就是一个IOC容器对象。这样就将IOC容器对象注入进来了。那么我们只需要调用applicationContext对象中的方法就可以获取到bean对象了。

1.根据bean的名称获取,使用getBean里面指定bean的名称,bean的名称默认类名首字母小写。根据名称获取获取的是一个Object类型的bean对象,要将其强转为DeptController类型。
2.根据bean的类型获取,使用getBean里面指定bean的类型。
3.根据类型+名称获取bean对象,使用getBean里面指定bean的名称和bean的类型。运行测试类拿到3次bean对象是同一个对象,地址一样,那也就是说默认的ioc容器中不同类型bean对象只有一个,是单例的。那么能不能每次拿到不同的bean对象呢?可以。涉及下一节bean的作用域。


http://www.ppmy.cn/devtools/163310.html

相关文章

linux里面的过滤符号 | 是如何实现的

ls -l | grep ".txt" 的实现过程涉及无名管道的创建、进程的创建(fork())以及输入输出的重定向(dup2())。以下是详细的实现步骤和代码示例: 实现步骤 创建无名管道: 使用pipe()系统调用创建一个无…

说说 Spring MVC 的执行流程

Spring MVC 是一个基于 Java 的轻量级、开源的 Web 框架,用于构建 Web 应用程序。它通过将请求处理的各个阶段解耦,使得开发更加灵活和模块化。以下是 Spring MVC 的执行流程,从用户发起请求到返回响应的整个过程: --- ### 1. 用…

图片爬取案例

修改前的代码 但是总显示“失败” 原因是 修改之后的代码 import requests import os from urllib.parse import unquote# 原始URL url https://cn.bing.com/images/search?viewdetailV2&ccidTnImuvQ0&id5AE65CE4BE05EE7A79A73EEFA37578E87AE19421&thidOIP.TnI…

毛泽东思想“活的灵魂”

关于毛泽东思想“活的灵魂”的构成及其内涵,综合历史文献与权威表述,核心内容整理如下: 一、毛泽东思想活的灵魂的权威定义 根据十一届六中全会《关于建国以来党的若干历史问题的决议》(1981年),毛泽东思想…

机器学习数学基础:33.肯德尔和谐系数教程

肯德尔和谐系数教程 一、定义与用途 肯德尔和谐系数(Kendall’s W)是一种用于衡量多个评价者对一组对象进行评价时,评价结果一致性程度的统计量。它的取值范围在0到1之间。当W \ 0时,表示评价者之间的评价完全不一致&#xff1…

Spring Boot启动过程?

目录 1. 启动入口 2. SpringApplication 初始化 3. 准备环境 4. 创建应用上下文(ApplicationContext) 5. 准备应用上下文 6. 刷新应用上下文 7. 启动 Web 服务器(若为 Web 应用) 8. 发布 ApplicationStartedEvent 事件 9. 执行 Runner 10. 发布 ApplicationReady…

macos下cocoapods的学习

step1:升级ruby $ /bin/bash -c " $ (curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" $ brew update $ brew install ruby $ echo export PATH"/usr/local/opt/ruby/bin:$PATH" >> ~/.bash_profile …

STM32编译过程

STM32编译过程 1. 编译过程介绍2. 程序的组成、存储与运行3. 编译工具链3.1 armcc 工具3.2 armasm 工具3.3 armlink 工具3.4 armar 工具3.5 fromelf 工具 4. MDK工程的文件类型 1. 编译过程介绍 编译MDK 软件使用的编译器是 armcc 和 armasm,它们根据每个 c/c 和汇编…