Spring Tool Suite 3.9.1.RELEASE
我们在XML文件中配置bean时,bean的id用于标识容器,是唯一的。若id没有指定,则Spring自动将全限定名作为bean的名字。id可以指定多个名字,名字之间可以用逗号、分号或空格分隔。class为类的全类名,由包名和类名组成。我们使用xml文件配置bean时,要求实体类必须要有一个无参构造方法,若没有则会启动报错。
属性注入方式,是通过setter方法为bean注入属性。我们在bean的配置文件中使用property元素中的name属性标识需要注入的bean属性,然后在类中使用setXxx()的方法将属性注入,因此name属性的值必须和setter方法中大写字母开头的名字要一致。如使用setName2()方法,则配置文件中name属性的值必须为name2。
上述步骤是通过属性注入依赖的方式,下面我们讲解通过构造器注入依赖的方式。通过构造方法来注入bean的属性值或依赖对象,它保证了Bean实例在实例化后就可以使用 。构造器注入在<constructor-arg>元素里声明属性,没有name属性,按照构造方法默认的顺序或指定顺序来注入。如下图所示,可以看到属性注入的顺序完全和构造方法传参的顺序一致。
我们编写测试代码,在测试代码的main()方法中获取Cat对象,并打印输出该对象。ApplicationContext在初始化上下文时就实例化所有单例的的Bean,用于获取Cat对象。打印输出默认的是调用Cat类的toString()方法,因此在创建类时需要重写toString()方法。
接下来我们在使用构造器注入时添加index属性用于标识注入的顺序,如下图所示。
使用构造器注入属性值可以指定参数的位置和参数的类型,用以区分重载的构造器。上述步骤指定了参数的位置,下面我们再为Cat方法创建一个有参构造,传入4个参数,如下图所示,而相应的bean的配置增加了type属性,用于标识字段的类型。
我们在使用构造器注入时,不仅可以用value属性,也可以使用value子元素。使用双标记的value子元素,中间包裹的位置填入相应的值即可,如下图所示。
如果我们在使用xml配置bean时,需要注入的属性中含有特殊字符,那么直接将特殊字符写在配置文件中是错误的。若字面值包含特殊字符,可以使用<![CDATA[]]>把字面值包裹起来,基本数据类型及其封装类、String等类型都可以采取字面值注入的方式。
只有字面值包含特殊字符,才使用<![CDATA[]]>包裹起来。
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!