Spring学习总结四——SpringIOC容器四
一: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容器四的更多相关文章
- Spring学习总结三——SpringIOC容器三
一:spring容器自动装配注入 为了减少xml中配置内容,可以使用自动装配注入,代替setter注入,只需要在 bean对象配置中添加属性autoWire即可,那么在类中就会自动扫描setXXX() ...
- Spring学习总结二——SpringIOC容器二
一:指定bean的依赖关系 例如examplebean对象依赖examplebean1对象,那么在创建examplebean对象之前就 需要先创建examplebean1对象. 1:创建Example ...
- Spring学习总结一——SpringIOC容器一
什么是spring spring是一个开源的轻量级的应用开发框架,它提供了IOC和AOP应用,可以减少组件之间的耦合度,即 解耦,spring容器可以创建对象并且管理对象之间的关系. 一:实例化spr ...
- Spring学习总结五——SpringIOC容器五
一:spring组件扫描 可以使用注解的方式,代替在xml配置文件配置bean,可以减少配置文件的书写,只需要在spring容器配置 文件中配置<context:component-scan b ...
- 四、spring成长之路——springIOC容器(下)
目录 5.spring注解开发(Spring扩展知识) 5.1定义配置类:@Configuration 声明一个类为IOC容器 @Bean定义一个Bean 5.2.按照条件进行注入 5.3.@Impo ...
- 三、spring成长之路——springIOC容器详解(上)
目录 一.springIOC 一.springIOC 控制反转和依赖注入: 简单的说就是将对象的创建,属性的的设置交给spring容器进行管理,而不再由用户自己创建,当用户需要使用该接口或者类的时 ...
- Spring学习之旅(二)--容器
在 Spring 应用中,所有的对象都在 Spring 容器(container) 里,容器负责对象的创建.配置.装配并管理它们的整个生命周期. Spring 容器 Spring 容器 并不是只有一个 ...
- Spring学习记录1——IoC容器
IoC容器 1.1 IoC概述 Ioc(Inverse of Control,控制反转)是Spring容器的内核.对于软件来说,即某一接口具体实现类的选择控制权从调用类中移除,转交给第三方决定,即由 ...
- Spring学习一: Ioc容器
Spring 容器: Spring 容器是Spring框架的核心.Spring容器将创建Bean对象实例,把它们联系在一起,配置它们,并管理它们整个生命周期从创建到销毁.Spring 容器通 ...
随机推荐
- 使用JAP(基类)父类注解
-----------------基类------------------------------- /** * @className:com.jubangit.ebusiness.database. ...
- J2EE项目相对路径、绝对路径获取
String path = getServletContext().getRealPath("/"); 这将获取web项目的全路径. this.getClass().getClas ...
- F5 负载均衡 相关资源
F5负载均衡之检查命令的说明http://net.zdnet.com.cn/network_security_zone/2010/0505/1730942.shtml F5培训http://wenku ...
- Map排序——按key排序,按value排序
注:转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5959279.html 上一篇博文谈到了集合类的自定义排序方式,那么进一步扩展开来,与集合同等重要的Map有 ...
- OC:点语法
IOS中的@property 与 assign copy retain 的区别参考 //@理解为 OC 代码的标记 //如何去创建一个对象 创建对象的两步: // (1)为对象在堆区中开辟空间 Stu ...
- JS 执行环境与作用域链
1.执行环境 JavaScript 代码都是在执行环境中被执行的.执行环境是一个概念,一种机制,用来完成JavaScript运行时在作用域.生命周期等方面的处理,它定义了变量或函数是否有权访问其他数据 ...
- jquery 选择器中含有空格注意
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 基于FlashPaper的文档播放器
本文主要讨论.描述了使用Adobe公司的Flex与FlashPaper产品完成对发布到网上的文档资料进行只读控制,也就是说只允许浏览操作.对下载.打印进行控制. FlashPaper FlashPap ...
- TL-WR703 USB不稳定/当前的总结
http://see.sl088.com/wiki/WR703_USB%E4%B8%8D%E7%A8%B3%E5%AE%9A/%E5%BD%93%E5%89%8D%E7%9A%84%E6%80%BB% ...
- C++学习笔记之友元
一.引言 C++控制对类对象私有部分(private)的访问,通常只能通过公有的(public)类方法去访问.但是有时候这种限制太严格,不适合特定的问题,于是C++提供了另外一种形式的访问权限:友元. ...