一: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学习记录(四)
虽然Spring管理这我们的Bean很方便,但是,我们需要使用xml配置大量的Bean信息,告诉Spring我们要干嘛,这还是挺烦的,毕竟当我们的Bean随之增多的话,xml的各种配置会让人很头疼. ...
随机推荐
-
jQuery对象和DOM对象的区别
jQuery对象和DOM对象使用说明,需要的朋友可以参考下.1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQuery ...
-
OpenCASCADE Curve Length Calculation
OpenCASCADE Curve Length Calculation eryar@163.com Abstract. The natural parametric equations of a c ...
-
[div+css]网站布局实例二
重点: 合理应用"xhtml标签"建立良好的页面结构 拿到一份"设计方案"的效果图后不要立即开始编码,而是要 首先理清"各元素之间的关系"; ...
-
Hbase写数据,存数据,读数据的详细过程
Client写入 -> 存入MemStore,一直到MemStore满 -> Flush成一个StoreFile,直至增长到一定阈值 -> 出发Compact合并操作 -> 多 ...
-
jquery-ui-widget
编写jQueryUI插件(widget) 使用jQueryUI的widget来写插件,相比于基本的jquery插件有一些好处: * 方便实现继承,代码重用 * 默认是单例 * widget已经给你实现 ...
-
前端测试框架Jest系列教程 -- Expect(验证)
写在前面 在编写测试时,我们通常需要检查值是否满足某些条件,Jest中提供的expect允许你访问很多“Matchers”,这些“匹配器”允许您验证不同的东西. Expect 可以验证什么 Jest中 ...
-
C#中Timer定时器的使用示例
关于C#中timer类 在C#里关于定时器类就有3个: 1.定义在System.Windows.Forms里 2.定义在System.Threading.Timer类里 3.定义在System.Tim ...
-
poj3410单调队列(单调栈)
思路:求每个人的左使者就是从左到右把每个人加入到单调队列中去,加入时最后一个出队的就是那个最大的小于这个数的数 求右信使同理 由于本题的单调队列队头不需要出队,所以其实是一个单调栈 /* 每个人只要找 ...
-
kafka入门2:java 创建及删除 topic
1.pom <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.1 ...
-
EF框架 对字段属性为NULL的空值处理 类型前面加上?保证EF列表读取显示数据不会报异常
譬如: public int? FlowStatus { get; set; } public DateTime? UpdateTime { get; set; }