Spring 中通过beans.xml文件创建对象的方式, 通过property标签给对象属性赋值时. 所有的值都是作为字符串读入.对于不同的属性类型有不同的处理方式.
1- String类型属性可以直接接收.
2- 四类八种基本数据类型可以直接接收.
3- 除String以外的所有自定义数据类型不可以直接接收.
通过beans文件给属性赋初值的技术方法叫做注入, String及四类八种基本数据类型的注入方式为值注入,当属性为对象时需要有两种处理方法:
1- beans文件中对象注入---两种方式
(1) 在property标签中嵌套bean标签,在bean标签中创建对象,可以同时赋初值;
(2) 通过DI(依赖注入)方式,使用ref标签通过id链接到指定对象的bean标签
2- 属性编辑器+beans值注入---步骤如下
(1) 创建属性编辑类,该类需要继承自PropertyEditorSupport父类;
(2) 重写父类中setAsText方法,该方法参数列表接收一个String类型数据,该数据就是property标签中的value
(3) 处理接收到的value值, 并通过这些值创建一个指定类型的对象
(4) 在setAsText方法中调用setValue方法,将上一步创建的对象作为参数传给该方法.
(5) 在beans.xml文件中添加创建的编辑器的类, 通过bean标签
<bean id="birdEditor"class="com.wx.pojo.BirdEditor"></bean>
<bean id="dateEditor"class="com.wx.pojo.DateEditor">
<property name="format" value="yyyy-MM-dd"/>
</bean>
(6) 在beans.xml文件中添加一个Spring框架中的类, 名为CustomerEditorConfigurer, 该类中有一个Map型参数,其中键为属性的包名点类名,值为第五部中创建的编辑器对象的id:
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="com.wx.entity.Bird" value-ref="birdEditor"/>
<entry key="java.util.Date" value-ref="dateEditor"></entry>
</map>
</property>
</bean>
(7) 通过正常值注入的方式书写对象属性,需要注意这里value需要符合编辑其中解析字符串的规则书写.如不同的基本属性通过逗号隔开.
<property name="bird" value="1,小樱"/>
<property name="creatDate" value="2018-01-29"/>