Spring中如何配置bean

在讲解Spring中bean的配置之前, 首先需要学习两个概念:IOC(反转控制)和DI(依赖注入) 。 IOC(Inversion of Control)的思想是反转资源获取的方向, 传统的资源查找方式要求组件向容器发起请求查找资源, 而应用了IOC之后, 则是容器主动地将资源推送给它所管理的组件, 组件所要做的仅是选择一种合适的方式来接收资源 。 DI(Depency Injection)是IOC的另一种表现形式, 即组件以一些预先定义好的方式(例如:setter方法)接收来自如容器的资源注入 。 本文主要讲解基于XM工具/材料 Spring Tool Suite 3.9.1.RELEASE
操作方法 01 我们在XML文件中配置bean时, bean的id用于标识容器, 是唯一的 。 若id没有指定, 则Spring自动将全限定名作为bean的名字 。 id可以指定多个名字, 名字之间可以用逗号、分号或空格分隔 。 class为类的全类名, 由包名和类名组成 。 我们使用xml文件配置bean时, 要求实体类必须要有一个无参构造方法, 若没有则会启动报错 。

Spring中如何配置bean

文章插图

Spring中如何配置bean

文章插图

Spring中如何配置bean

文章插图

02 属性注入方式, 是通过setter方法为bean注入属性 。 我们在bean的配置文件中使用property元素中的name属性标识需要注入的bean属性, 然后在类中使用setXxx()的方法将属性注入, 因此name属性的值必须和setter方法中大写字母开头的名字要一致 。 如使用setName2()方法, 则配置文件中name属性的值必须为name2 。

Spring中如何配置bean

文章插图

Spring中如何配置bean

文章插图

03 上述步骤是通过属性注入依赖的方式, 下面我们讲解通过构造器注入依赖的方式 。 通过构造方法来注入bean的属性值或依赖对象, 它保证了Bean实例在实例化后就可以使用 。 构造器注入在<constructor-arg>元素里声明属性, 没有name属性, 按照构造方法默认的顺序或指定顺序来注入 。 如下图所示, 可以看到属性注入的顺序完全和构造方法传参的顺序一致 。

Spring中如何配置bean

文章插图

Spring中如何配置bean

文章插图

04 我们编写测试代码, 在测试代码的main()方法中获取Cat对象, 并打印输出该对象 。 ApplicationContext在初始化上下文时就实例化所有单例的的Bean, 用于获取Cat对象 。 打印输出默认的是调用Cat类的toString()方法, 因此在创建类时需要重写toString()方法 。

Spring中如何配置bean

文章插图

05 接下来我们在使用构造器注入时添加index属性用于标识注入的顺序, 如下图所示 。

Spring中如何配置bean

文章插图

06 使用构造器注入属性值可以指定参数的位置和参数的类型, 用以区分重载的构造器 。 上述步骤指定了参数的位置, 下面我们再为Cat方法创建一个有参构造, 传入4个参数, 如下图所示, 而相应的bean的配置增加了type属性, 用于标识字段的类型 。

推荐阅读