一: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. 1005. 继续(3n+1)猜想 (25)

    卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对n=3进行验证的时候, ...

  2. ASP.NET读取配置文件发送邮件

    之前写过一篇文章C#使用SMTP发送邮件 后来做了改进,改成读取独立的配置文件,本文只记录读取配置文件的部分,发送部分见上面的链接. 读取配置文件C#代码: using System; using S ...

  3. 使用IBatisNet的网站,修改database.config无效的问题解决

    这周五去客户那更新了一个使用了IBatisNet的Web项目,备份了项目.数据库之后,替换更新的文件(含bin目录)却报数据库连接错. 因为是接手的一个维护项目,加上交接有点问题,所以遇到问题只能自己 ...

  4. :app:transformResourcesWithMergeJavaResForDebug FAILED

    资源xml有错误,应该排查每一处xml. 如果提示gradle相关错误,需要修改系统级的build.gradle和程序级的build.gradle,比如后者不能缺少:dependencies {    ...

  5. Mysql的存储过程(以Mysql为例进行讲解)

       我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储 在数据库中,用户通过指定存 ...

  6. DropdownList绑定的两种方法

    动态绑定方法一:动态绑定数据库中的字段. SqlConnection conn = UtilitySqlClass.OperateDataBase.ReturnConn();string strSQL ...

  7. .NET企业轻量级开发框架(APS.NET+Spring.Net+NHibernate)

          在<企业级应用架构>系列文章发表之余,也得到了许多同行的反馈,有人说这套框架太重了或者技术学习太复杂了或者初学者不太好理解或者完全颠覆了传统APS.NET开发模式让人望而生畏. ...

  8. Codeforces Round #306 (Div. 2) C. Divisibility by Eight 暴力

    C. Divisibility by Eight Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/ ...

  9. DebugView 调试工具

    软件标签: DebugView调试工具 用debugview,打开debugview,运行你的debug版本程序,可以定位到源文件的某一行.在vc源码中需要输出的地方用 OutputDebugStri ...

  10. Unity3d截图保存到Android相册的实现

    Unity3d截图保存到Android相册的实现-----------------------------ultrasoon 季风原创--------------------------------- ...