Spring是如何获取xml文件配置的,又是如何获取bean的

0 前言

如下是配置Spring bean的基本代码,该代码位于src/main/java/com/zheng/lesson001/demo1中

        //1.bean配置文件位置
        String beanXml = "classpath:/com/zheng/lesson001/demo1/beans.xml";
        //2.创建ClassPathXmlApplicationContext容器,给容器指定需要加载的bean配置文件
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(beanXml);

beans.xml文件位于src/main/resources/com/zheng/lesson001/demo1中,代码如下

<?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:bean的唯一标识,可以通过这个标识从容器中获取这个bean对象 clss:这个bean的类型,完整类名称
    -->
    <bean id="helloWorld" class="com.zheng.lesson001.demo1.HelloWorld"/>
</beans>

当运行时,ClassPathXmlApplicationContext会加载beans.xml文件,进一步加载com.zheng.lesson001.demo1.HelloWorld类。
问题是ClassPathXmlApplicationContext是如何根据"classpath:/com/zheng/lesson001/demo1/beans.xml"找到该文件的,而Spring IOC又是如何找到com.zheng.lesson001.demo1.HelloWorld?

1 CLASSPATH变量与jar包

java文件分为源文件(.java)和字节码文件(.class),在编写完java源文件之后,如果想要运行java程序,就需要对其进行编译,再使用java虚拟机运行。编译过程中,idea(IDE)会将所有的java文件编译之后输出到classpath中,附带着将所有resources中的文件也打包到里边。而所有的java程序都是从这里边寻找资源文件的(包括xml和.class)文件。
Spring的ClassPathXmlApplicationContext便是从classpath下寻找Spring bean的配置文件,当然如果希望通过绝对路径加载配置文件可以使用FileSystemXmlApplicationContext。
Spring IOC容器通过bean配置文件加载各个类。在编译时,HelloWorld.class的全名为com.zheng.lesson001.demo1.HelloWorld.class,bean文件规定了id与类的映射,可以通过id找到需要的class。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fourier_1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值