spring中如何给集合元素注入值(第四篇)
来源:互联网 发布:tv365网络电视下载 编辑:程序博客网 时间:2024/06/08 04:25
如果是数组的话,例如private String [] name,需要如下配置bean
<property name="name">
<list>
<value>小明</value>
<value>小刚</value>
</list>
</property>
如果类型是List的话则需如下配置
<property name="属性的名字" >
<list>
<ref bean="id1">
<ref bean="id2">
</list>
</property>
<bean id="id1" class="XXX">
<property name="XXX" value="XXX"/>
</bean>
<bean id="id2" class="XXX">
<property name="XXX" value="XXX"/>
</bean>
如果类型是Set类型的集合的话则把上面配置中的<list>改为<set>即可
配置Map类型的集合稍微有些麻烦,见如下
<map>
<entry key或key-ref=" XXX" value或value-ref="XXX"/>
</map>
通过for循环输出:
for(Entry<key,value> entry : 对象名.getMap().entrySet)
System.out.println(entry.getKey()+" "+entry.getValue().getName());
bean可以在<property>里配置,这种bean叫做内部bean,不能被外部引用。
如果在JAVA代码中类与类之间存在继承关系,那么在bean 中如何配置才能体现出类与类之间的继承关系呢?很简单,假如已经先配置好了父类的属性,在配置子类的属性的时候,只需在bean的属性中加入一个parent="父类的id"即可,如果自己单独配置子类和父类共有的属性的话,则会覆盖父类属性原有的值。
给某个属性注入空值:
<property name="XXX">
</null>
</property>
在bean中配置属性的时候可以通过对象的set方法来给属性注入值,也可以通过构造函数来给属性注入值,如下:
<constructor-arg index="0" type="java.lang.String" value="小明">
<constructor-arg index="1" type="int" value="23">
于是在加载beans文件的时候反射机制就会通过调用JAVA对象的构造函数来注入值,index表示第几个属性值,按照从上到下的顺序,从0开始,type表示值的类型。set注入属性的缺点是无法确定哪些属性是必须的,构造函数注入属性的话可以建立一个强制依赖的关系,例如只有一个显示的构造函数,有两个值,那么你在配置bean文件的时候必须把这两个值都给上。
一个类的属性包含用另一个类定义的对象时,配置beans的时候可以用ref来引用另一个对象,spring中还提供了另一种自动装配的方式,也就是在bean中的autowire属性制定,需要注意的是被引用的对象的id必须为类的属性的名字,这样才能找到并注入属性,autowire属性值有如下几种: byName(根据属性名自动装配),byType(根据类型装配,如果找到一个则装配,如果找到多个则抛出异常),constructor(需要在类里提供一个含有bean属性的构造函数),autodetect(在byType和constuctor两者之间选一个方式,后者级别高一些)defualt
下面的默认装配方式都为byName,根据属性值来确定,自动装配的默认值为default,而default的默认值为no。
自动装配最好能不用最不要用,因为没有直接set方法那么明确。
如果beans中再多个bean中的属性的值相同的话spring可以采取分散配置来处理,这样就不用在每个bean中重复的定义相同的属性。
说明: 当通过 context:property-placeholder 引入 属性文件的时候,有多个需要使用 , 号间隔.
<!-- 引入我们的db.properties文件 -->
<context:property-placeholderlocation="classpath:com/hsp/dispatch/db.properties,classpath:com/hsp/dispatch/db2.properties"/>
<!-- 配置一DBUtil对象 $占位符号 -->
<bean id="dbutil"class="com.hsp.dispatch.DBUtil">
<property name="name"value="${name}" />
<property name="drivername"value="${drivername}" />
<property name="url"value="${url}" />
<property name="pwd"value="${pwd}" />
</bean>
db.properties:
name=scott
drivername=oracle:jdbc:driver:OracleDirver
url=jdbc:oracle:thin:@127.0.0.1:1521:hsp
pwd=tiger
- spring中如何给集合元素注入值(第四篇)
- spring-如何给静态变量注入值
- spring-如何给静态变量注入值
- 如何在spring框架中给接口属性注入??
- Spring注入集合值
- Spring集合类型值注入
- Spring之注入集合值
- spring的注入集合类型的元素小结
- 如何给Apk中注入代码【开发一款自动注入代码工具icodetools(开凿篇)】
- spring给Bean属性注入null值
- Spring 给Bean属性注入null值
- spring boot 给静态变量注入值
- WebDriver中如何给元素设置焦点
- spring 集合注入方式
- spring集合注入
- Spring -------集合对象注入
- Spring注入集合
- Spring集合注入
- win7删除微软拼音输入法
- LeetCode 275 H-Index II
- 简单(simple)扩充视图树(TreeView)
- JSON使用OnSerializing,OnSerialized,OnDeserializing,OnDeserialized
- 运行BP神经网络预测误差大
- spring中如何给集合元素注入值(第四篇)
- 学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门)
- 周鸿祎:混日子,会让你失去竞争力
- 安卓开发学习之017 自定义控件之属性获取
- 有哪些问题是找工作的才会考虑得??
- 通过快速枚举的方法查找文件
- Java:一些访问资源的技巧
- Android的Listview的ListAdapter关于View的经典写法
- 对话框学习经验摘记