【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对象的方式需要确保获取对象的唯一性

相关推荐
加什么瓦3 分钟前
String、StringBuilder、StringBuffer的区别
java·开发语言·jvm
九转苍翎1 小时前
JAVA SE(9)——多态
java
好想像大佬一样能够ak所有1 小时前
蓝桥杯-通电(最小生成树java)
java·数据结构·算法·蓝桥杯
就叫年华吧丶1 小时前
Apache POI实现Excel的基本写入、导出操作
java·maven·apache·excel
18你磊哥2 小时前
Java泛型深度解析与电商场景应用
java·开发语言·windows
老友@2 小时前
如何修改 JAR 包中的源码
java·jar·源码改造
optimistic_chen2 小时前
【Java EE初阶 --- 多线程(初阶)】多线程的基本内容
java·经验分享·笔记·java-ee·多线程
XuanRanDev3 小时前
Kotlin 作用域函数全解析:let、run、with、apply、also 应该怎么选?
java·kotlin
程序员小刚3 小时前
基于SpringBoot + HTML 的宠物医院预约管理
java·spring boot·后端