Spring的属性注入到bean实例的细节
来源:互联网 发布:2016网络在逃犯名单 编辑:程序博客网 时间:2024/05/29 04:05
前边我们讲过了Spring框架的配置文件中如何配置一个普通Java类的bean从而利用反射创建一个这个类的实例和如何使用IOC容器的实例ApplicaitonContext的ClasspathXmlApplicaitonContext和FileSystemApplicaitonContext来使用配置的bean。下边我们讲一讲如何对在配置文件创建的bean的实例进行属性注入的细节。
我们知道,属性注入是为Java类创建的对象的定义的属性进行赋值,某个类中的属性可以基本数据类型(其对应的封装数据类型)、String类型、数组、集合(包含Map和Properties)和其他应用数据类型。对不同的类型,在配置文件中使用不同的配置方式为其进行赋值。
1.字面值
字面值是指可以用字符串表示的值,可以用字符串为基础数据类型及其封装类、字符串类型的类属性进行赋值(字面值)。具体使用property标签的value=""属性来为其赋值。
需要注意的是:当字面值中出现特殊符号时(如配置文件中使用的<>间括号)时,我们无法再单纯的使用字符串表示会出现编译错误,这时就需要使用<![CDATA][带特殊符号的字面值]>将字面值包含进去就可以了。
2. 属性值直接引用其他的bean
在组成应用程序的bean中常常需要相互协作以完成应用程序的功能,通过ref标签或属性ref使bean之间可以相互引用。
或者我们可以直接在property标签中定义一个内部bean来使用,内部bean定义在某个bean的内部,外部的bean是无法使用的,所以内部bean的id属性写不写都可以。
有时我们可以直接将某个实例的属性指向已经存在于配置文件中的bean实例,具体使用<property name="" ref="beanID">即property的ref属性或者使用property的子标签ref。
3.注入属性null值和级联属性
① 为属性注入null值
使用专有 的<property name=""><null/></property>null标签来为某个属性注入一个null值
② Spring属性注入时支持级联操作
像Hibernate和Struts2(OGNL)一样,Spring也支持级联操作。<property name="car" value="car.name"></property>
需要注意的是,对于级联操作,Struts2和Spring框架也存在一些区别。Struts2在使用OGNL时用到的级联操作可以直接为属性对象的属性进行赋值,因为Strust2框架自动的帮助我们创建了一个属性对象;而在Spring中为属性对象赋值时,必须保证在配置文件中存在一个属性对象的bean,否则若是直接给属性对象的属性赋值会报异常,Spring不会自动的为我们创建一个属性对象。
4. 注入属性的集合属性
Spring可以在xml配置文件中使用一组内置的标签为集合属性进行注入赋值:<list><set><map>,其中数组也要用<list>进行属性注入赋值。
使用<list>为属性注入值时,可用<value>指定字面值,<ref>指向其他的bean的应用等等。
<map> 可用<entry>标签的key value属性来为map进行赋值。
properties类型用<props>和其子标签<prop>来为其进行赋值。
需要注意的是,单独将集合(含list/set/map/propertis)标签定义在一个Bean中显然不利于我们重复使用这些结合属性,当我们在配置文件中有多个bean需要注入同样的集合属性时,我们可以将集合属性定义在全局中,相当于单独创建了一个集合类型的"bean"。
5.使用p命名空间
我们在为bean进行属性注入时,需要单独使用property标签或者constructor-args标签,比较繁琐,其实我们还可以用一种更简单的方式来为bean实例进行属性的注入。
即使用P的命名空间。我们必须在当前工程当中导入命名空间。
具体使用:<bean id="" class="" p:propertyName="propertyValue" ></bean>
- Spring的属性注入到bean实例的细节
- Spring属性注入Bean的List属性
- Spring-3:bean的属性配置细节
- spring属性的注入实例
- Spring 之 Bean的属性注入
- Spring中Bean的简单属性注入
- Spring中Bean的复杂属性注入
- spring 依赖注入bean的属性
- spring boot获取注入的实例bean
- 1.Spring bean常见属性的注入:bean
- bean属性的注入
- Bean的属性注入
- [4]Spring以注解的方式进行Bean的实例化和属性注入
- 模拟spring,自定义容器一(属性注入、Bean的实例化)
- 如何注入值到Spring bean属性
- Spring注入日期到bean属性-CustomDateEditor
- bean标签的属性和spring属性注入
- Spring的bean注入
- 进程和线程浅谈
- 堆排序 C++实现
- 算法导论 练习题 20.2-1
- maven项目驱动报错
- JSP中文乱码问题终极解决方案
- Spring的属性注入到bean实例的细节
- C#的类型转换
- ios开发 数字转汉字
- python学习笔记(一)
- 到底什么才是自动化巡检?
- Vue.js总体梳理
- 利用伪元素:before实现的快递单查询垂直列表的demo
- javscript 七牛上传图片
- 网络端口的调研