【Spring】第三弹:基于 XML 获取 Bean 对象

一、获取 Bean 对象

1.1 根据名称获取 Bean 对象

由于 id 属性指定了 bean 的唯一标识,所以根据 bean 标签的 id 属性可以精确获取到一个组件对象。

1.确保存在一个测试类:

java 复制代码
public class HelloWorld {

    public void sayHello(){
        System.out.println("helloworld");
    }
}

2.通过名称获取 Bean 对象

java 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="helloWorld" class="Test.HelloWorld"></bean>
</beans>

1.2 根据类型查找 Bean 对象

java 复制代码
public static void main(String[] args) {
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
    //HelloWorld helloWorld = (HelloWorld)applicationContext.getBean("helloWorld");
    HelloWorld helloWorld =(HelloWorld)applicationContext.getBean(HelloWorld.class);
            helloWorld.sayHello();
    log.info("日志输出完成");
}

1.3 根据名称和类型查找 Bean 对象

java 复制代码
public static void main(String[] args) {
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
    //HelloWorld helloWorld = (HelloWorld)applicationContext.getBean("helloWorld");
    //HelloWorld helloWorld =(HelloWorld)applicationContext.getBean(HelloWorld.class);
    HelloWorld helloWorld =(HelloWorld)applicationContext.getBean("helloWorld",HelloWorld.class);
    helloWorld.sayHello();
    log.info("日志输出完成");
}

1.4 如果存在相同类型的多个Bean对象

1.类型相同名称不同的多个Bean对象,可以通过名称的不同查找到对象

2.类型相同名称不同的多个Bean对象,如果通过类型查找会报错:

3.建议根据 名称+类型 的方式进行Bean对象的查找

获取Bean对象的方式需要确保获取对象的唯一性

相关推荐
云泽80823 分钟前
函数模板与类模板:C++泛型编程核心解析
java·开发语言·c++
缺点内向4 小时前
Java:创建、读取或更新 Excel 文档
java·excel
带刺的坐椅4 小时前
Solon v3.4.7, v3.5.6, v3.6.1 发布(国产优秀应用开发框架)
java·spring·solon
四谎真好看6 小时前
Java 黑马程序员学习笔记(进阶篇18)
java·笔记·学习·学习笔记
桦说编程6 小时前
深入解析CompletableFuture源码实现(2)———双源输入
java·后端·源码
java_t_t6 小时前
ZIP工具类
java·zip
lang201509286 小时前
Spring Boot优雅关闭全解析
java·spring boot·后端
pengzhuofan7 小时前
第10章 Maven
java·maven
百锦再8 小时前
Vue Scoped样式混淆问题详解与解决方案
java·前端·javascript·数据库·vue.js·学习·.net
刘一说8 小时前
Spring Boot 启动慢?启动过程深度解析与优化策略
java·spring boot·后端