Spring核心之一:Spring的配置文件是干什么的

您所在的位置:网站首页 飞书文档是干什么的 Spring核心之一:Spring的配置文件是干什么的

Spring核心之一:Spring的配置文件是干什么的

2023-07-24 16:12| 来源: 网络整理| 查看: 265

前面两篇文章讲解了 IOC、DI的概念,以及我们为什么需要他们。这篇文章将继续讲述,SpringIOC容器的定义形式——xml配置文件,将弄清楚两个疑问: 1. Spring xml配置文件的作用。(与IOC思想一脉相承的) 2. 如果定义Bean以及Bean之间的依赖关系。(只说明最简单的方式,关于这个的更详细的用法,后续会再写文章讲述)

当你的程序整合一些工具的时候,比如数据库、Redis、Mongodb等,网上的教程都是在Spring配置文件中加这个加那个,其实只有两个目的:

1. 将这些工具类放在配置文件中,Spring框架会去读配置文件,然后实例化这些类的对象,存储在Spring容器中(内存中),可以随时从容器中获取并使用。

2. 我们在配置文件中指定类与类之间的依赖关系,而不是在代码中去写这些依赖关系。

我们来看一下Spring的配置文件。

spring配置文件采用schema格式,如上。beans标签是 xml配置文件的根节点;xmlns这些属性都是命名空间,在Beans标签下写一些其他标签,要想被识别,基本都需要导入对应的命名空间,这样才会被识别。

以下是待配置依赖关系的Java代码(这段代码最好详细看看,很有代表意义!!!):

/** * Car类是一个调用类,其有一个成员变量wheel,依赖于Wheel接口 */ public class Car { private Wheel wheel; public void truckRun(){ wheel.trun(); } } /**********下面是Wheel接口及其两个实现类*****************************/ public interface Wheel { void trun(); } /** * 前驱轮的实现类 */ public class PrecursorWheel implements Wheel{ @Override public void trun() { System.out.println("precursor trun!"); } } /** * 后驱轮子的实现类 */ public class RearWheel implements Wheel{ @Override public void trun() { System.out.println("rear trun!"); } }

我们可以看到,Car类要想成功执行run()方法,必须去调用 Wheel 的一个实现类的方法。但是我们并没有 在Car类中去写代码来说明Car类的wheel成员变量指向哪一个Wheel实现类,这个指向的控制权,我们把它放到一个集中的配置文件中——Spring配置xml文件。

这就是我上面说的那句话的意思:

我们在Spring配置文件中指定类与类之间的依赖关系,而不是在代码中去写这些依赖关系。

在Beans标签内,通过Bean标签来配置我们的实例(所以我们常称Spring管理的对象叫Bean对象),将其指定给Spring容器去管理:

通过上述的配置,Spring容器中将会存储三个名字叫 precursorWheel、rearWheel、car的 实例对象(默认是单例的)。

而car实例的 wheel字段,通过 property标签,指定 给了 precursorWheel 这个对象。业务表现上来说,car对象是前驱驱动的车子。显然,我们将 Car类 和 PrecursorWheel类的依赖关系 转移到了配置文件中,也许从这个例子中我们看不出 依赖关系定义到配置文件中 比 定义到 Car类中 的优势在哪里,但是我们应该联想到: 一个应用程序中,类与类之间的依赖关系是在非常多的。比如C与D、A与D、F与D依赖,如果我们全部写在代码中,一旦需求有变,需要将D类改为B类,那我们至少将要修改 A、C、F类的信息,代码量改动非常大。 如果将依赖关系放在配置文件中,我们只需要改集中的配置文件就好了,改动起来将会非常简洁方便,而且类与类的依赖关系在配置文件中也非常明了,方便修改。 总结,Spring配置文件的作用: 提供自定义的方式,将类的实例交给Spring的Bean容器进行管理,自定义的内容包括:类的信息+类与类的依赖关系。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3