一:spring容器给bean对象注入属性值

1:注入基本属性值

a. 创建MessageBean类:

 /**
*
*/
package com.hlcui.dao; /**
* @author Administrator
*
*/
public class MessageBean {
private String name; private int age; private double salary; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public double getSalary() {
return salary;
} public void setSalary(double salary) {
this.salary = salary;
} public String execute() {
System.out.println("name=" + name + "\nage=" + age
+ "\nsalary=" + salary);
return "success";
} }

b. 在spring容器配置文件中配置MessageBean对象核心代码:

 <!-- 配置MessageBean对象 -->
<bean id="messageBean" class="com.hlcui.dao.MessageBean">
<property name="name" value="Jack"></property>
<property name="age" value="27"></property>
<property name="salary" value="12000"></property>
</bean>

或者将value元素作为property元素的子元素,效果是一样的

 <bean id="messageBean" class="com.hlcui.dao.MessageBean">
<property name="name">
<value>Tom</value>
</property>
<property name="age">
<value>27</value>
</property>
<property name="salary">
<value>12000</value>
</property>
</bean>

c. 运行测试方法

 @Test
public void testBaseInject(){
ApplicationContext ac = getApplicationContext();
MessageBean mb = ac.getBean("messageBean", MessageBean.class);
mb.execute();
}

通过运行结果可知属性值已经注入到对象中,这种方式在前面已经总结过,就是setter注入。

2:注入集合属性值(List、Set、Map、Properties)

修改MessageBean类:

 /**
*
*/
package com.hlcui.dao; import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.Map.Entry; /**
* @author Administrator
*
*/
public class MessageBean {
private List<String> someList;
19 private Set<Integer> someSet;
20 private Map<String,Object> someMap;
21 private Properties props; private String name; private int age; private double salary; public List<String> getSomeList() {
31 return someList;
32 }
33
34 public void setSomeList(List<String> someList) {
35 this.someList = someList;
36 }
37
38 public Set<Integer> getSomeSet() {
39 return someSet;
40 }
41
42 public void setSomeSet(Set<Integer> someSet) {
43 this.someSet = someSet;
44 }
45
46 public Map<String, Object> getSomeMap() {
47 return someMap;
48 }
49
50 public void setSomeMap(Map<String, Object> someMap) {
51 this.someMap = someMap;
52 }
53
54 public Properties getProps() {
55 return props;
56 }
57
58 public void setProps(Properties props) {
59 this.props = props;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public double getSalary() {
return salary;
} public void setSalary(double salary) {
this.salary = salary;
} public String execute() {
System.out.println("name=" + name + "\nage=" + age
+ "\nsalary=" + salary);
System.out.println("--------List集合结果--------");
90 for(String str:someList){
91 System.out.println(str);
92 }
93 System.out.println("--------Set集合结果--------");
94 for(Iterator<Integer> it = someSet.iterator();it.hasNext();){
95 System.out.println(it.next());
96 }
97 System.out.println("-------Map集合结果--------");
98 for(Entry<String, Object> entry:someMap.entrySet()){
99 String key = entry.getKey();
100 String value = (String) entry.getValue();
101 System.out.println(key+"=="+value);
102 }
103 System.out.println("-------Properties结果------");
104 for(Object obj : props.keySet()){
105 String value = props.getProperty((String) obj);
106 System.out.println(obj+"=="+value);
107 }
return "success";
} }

配置文件修改如下:

 <bean id="messageBean" class="com.hlcui.dao.MessageBean">
<property name="name">
<value>Tom</value>
</property>
<property name="age">
<value>27</value>
</property>
<property name="salary">
<value>12000</value>
</property>
<property name="someList">
<list>
<value>aaaaList</value>
<value>bbbbList</value>
<value>ccccList</value>
</list>
</property>
<property name="someSet">
<set>
<value>111</value>
<value>222</value>
<value>333</value>
</set>
</property>
<property name="someMap">
<map>
<entry key="1" value="java"></entry>
<entry key="2" value="c++"></entry>
<entry key="3" value="c#"></entry>
</map>
</property>
<property name="props">
<props>
<prop key="username">root</prop>
<prop key="password">root</prop>
</props>
</property>
</bean>

运行测试方法:

从结果可以看出,参数注入成功!!!

3:引用方式注入集合属性

修改配置文件内容如下:

 <util:list id="someList">
<value>aaaaList</value>
<value>bbbbList</value>
<value>ccccList</value>
</util:list>
<util:set id="someSet">
<value>111</value>
<value>222</value>
<value>333</value>
</util:set>
<util:map id="someMap">
<entry key="1" value="java"></entry>
<entry key="2" value="c++"></entry>
<entry key="3" value="c#"></entry>
</util:map>
<util:properties id="props">
<prop key="username">root</prop>
<prop key="password">root</prop>
</util:properties>
<bean id="messageBean" class="com.hlcui.dao.MessageBean">
<property name="name">
<value>Tom</value>
</property>
<property name="age">
<value>27</value>
</property>
<property name="salary">
<value>12000</value>
</property>
<property name="someList" ref="someList"></property>
<property name="someSet" ref="someSet"></property>
<property name="someMap" ref="someMap"></property>
<property name="props" ref="props"></property>
</beans>

运行测试方法:

和之前的效果是一样的,只不过这样配置更加明了!

二:利用spring表达式注入属性值

1:在src下添加文件user.properties,内容如下:

 name=Jack
age=30
salary=15000

2:在spring容器配置文件中加载配置文件

 <!-- 加载配置文件user.properties -->
<util:properties id="user" location="classpath:user.properties"/>
 <!-- 配置MessageBean对象 -->
<bean id="messageBean" class="com.hlcui.dao.MessageBean">
<property name="name" value="#{user.name}"></property>
<property name="age" value="#{user.age}"></property>
<property name="salary" value="#{user.salary}"></property>
</bean>

3:运行测试方法

通过结果可知spring表达式注入成功!

三:spring注入空值

1:修改配置文件

 <!-- 配置MessageBean对象 -->
<bean id="messageBean" class="com.hlcui.dao.MessageBean">
<property name="name">
<null/>
</property>
<property name="age" value="#{user.age}"></property>
<property name="salary" value="#{user.salary}"></property>
</bean>

2:运行测试方法

空值注入成功,只有引用数据类型才可以注入空值!

Spring学习总结四——SpringIOC容器四的更多相关文章

  1. Spring学习总结三——SpringIOC容器三

    一:spring容器自动装配注入 为了减少xml中配置内容,可以使用自动装配注入,代替setter注入,只需要在 bean对象配置中添加属性autoWire即可,那么在类中就会自动扫描setXXX() ...

  2. Spring学习总结二——SpringIOC容器二

    一:指定bean的依赖关系 例如examplebean对象依赖examplebean1对象,那么在创建examplebean对象之前就 需要先创建examplebean1对象. 1:创建Example ...

  3. Spring学习总结一——SpringIOC容器一

    什么是spring spring是一个开源的轻量级的应用开发框架,它提供了IOC和AOP应用,可以减少组件之间的耦合度,即 解耦,spring容器可以创建对象并且管理对象之间的关系. 一:实例化spr ...

  4. Spring学习总结五——SpringIOC容器五

    一:spring组件扫描 可以使用注解的方式,代替在xml配置文件配置bean,可以减少配置文件的书写,只需要在spring容器配置 文件中配置<context:component-scan b ...

  5. 四、spring成长之路——springIOC容器(下)

    目录 5.spring注解开发(Spring扩展知识) 5.1定义配置类:@Configuration 声明一个类为IOC容器 @Bean定义一个Bean 5.2.按照条件进行注入 5.3.@Impo ...

  6. 三、spring成长之路——springIOC容器详解(上)

    目录 一.springIOC 一.springIOC 控制反转和依赖注入: ​ 简单的说就是将对象的创建,属性的的设置交给spring容器进行管理,而不再由用户自己创建,当用户需要使用该接口或者类的时 ...

  7. Spring学习之旅(二)--容器

    在 Spring 应用中,所有的对象都在 Spring 容器(container) 里,容器负责对象的创建.配置.装配并管理它们的整个生命周期. Spring 容器 Spring 容器 并不是只有一个 ...

  8. Spring学习记录1——IoC容器

    IoC容器 1.1  IoC概述 Ioc(Inverse of Control,控制反转)是Spring容器的内核.对于软件来说,即某一接口具体实现类的选择控制权从调用类中移除,转交给第三方决定,即由 ...

  9. Spring学习一: Ioc容器

    Spring 容器:      Spring 容器是Spring框架的核心.Spring容器将创建Bean对象实例,把它们联系在一起,配置它们,并管理它们整个生命周期从创建到销毁.Spring 容器通 ...

随机推荐

  1. [Linux]常用命令与目录全拼

    命令缩写: ls:list(列出目录内容)cd:Change Directory(改变目录)su:switch user 切换用户rpm:redhat package manager 红帽子打包管理器 ...

  2. iPhone 微信平台链接到微信文章 返回上一页问题

    东钿金融服务平台 有个隐藏按钮,点击此按钮,会弹出一个九宫格的功能栏,其中有个‘工作时间‘,这项,它是链接到微信公众号里面的一篇文章,按照平常写法就是 直接把文章链接地址 赋在a的href上,但是iP ...

  3. CSS line-height 和 vertical-align 精解(上篇)

    声明本文转自:http://hi.baidu.com/wolongxzg/item/a39ef8299c984283af48f5b0 line-height属性的具体定义列表如下: 语法: line- ...

  4. 理解MFC 文档、视图、框架[转]

    理解文档/视图框架                                      出处.雷神 了解文档和视图的相互作用关系是编写MFC程序的基本功.但是MFC的应用程序框架把文档和视图之间 ...

  5. jquery 更换皮肤

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. CI reids 缓存

    注意:在项目中的application/libraries 中自己定义的类最好不要以cache命名. 连接 Redis 服务器的配置信息必须保存到 application/config/redis.p ...

  7. C# 操作数据库就的那点代码

    操作数据库的那点代码,别在费劲每个数据库都写一遍SQLHelper,SQLiteHelper,OleDbHelper,了,这里都有了. 接口不发了,自己抽取定义就行了. public abstract ...

  8. VK Cup 2012 Qualification Round 1 C. Cd and pwd commands 模拟

    C. Cd and pwd commands Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset ...

  9. hdu5072 2014 Asia AnShan Regional Contest C Coprime

    最后一次参加亚洲区…… 题意:给出n(3 ≤ n ≤ 105)个数字,每个数ai满足1 ≤ ai ≤ 105,求有多少对(a,b,c)满足[(a, b) = (b, c) = (a, c) = 1] ...

  10. busybox配置telnetd

    busybox配置telnetd的问题 进入busybox源码文件夹,选择telnet,telnetd.后确保在ramdisk的sbin文件夹下存在inetd和in.telnetd或telned.在r ...