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

1:注入基本属性值

a. 创建MessageBean类:

 1 /**
 2  *
 3  */
 4 package com.hlcui.dao;
 5
 6 /**
 7  * @author Administrator
 8  *
 9  */
10 public class MessageBean {
11     private String name;
12
13     private int age;
14
15     private double salary;
16
17     public String getName() {
18         return name;
19     }
20
21     public void setName(String name) {
22         this.name = name;
23     }
24
25     public int getAge() {
26         return age;
27     }
28
29     public void setAge(int age) {
30         this.age = age;
31     }
32
33     public double getSalary() {
34         return salary;
35     }
36
37     public void setSalary(double salary) {
38         this.salary = salary;
39     }
40
41     public String execute() {
42         System.out.println("name=" + name + "\nage=" + age
43                 + "\nsalary=" + salary);
44         return "success";
45     }
46
47 }

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

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

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

 1 <bean id="messageBean" class="com.hlcui.dao.MessageBean">
 2         <property name="name">
 3             <value>Tom</value>
 4         </property>
 5         <property name="age">
 6             <value>27</value>
 7         </property>
 8         <property name="salary">
 9             <value>12000</value>
10         </property>
11     </bean>

c. 运行测试方法

1 @Test
2     public void testBaseInject(){
3         ApplicationContext ac = getApplicationContext();
4         MessageBean mb = ac.getBean("messageBean", MessageBean.class);
5         mb.execute();
6     }

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

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

修改MessageBean类:

  1 /**
  2  *
  3  */
  4 package com.hlcui.dao;
  5
  6 import java.util.Iterator;
  7 import java.util.List;
  8 import java.util.Map;
  9 import java.util.Properties;
 10 import java.util.Set;
 11 import java.util.Map.Entry;
 12
 13 /**
 14  * @author Administrator
 15  *
 16  */
 17 public class MessageBean {
 18     private List<String> someList;19     private Set<Integer> someSet;20     private Map<String,Object> someMap;21     private Properties props;
 22
 23     private String name;
 24
 25     private int age;
 26
 27     private double salary;
 28
 29
 30     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;
 60     }
 61
 62     public String getName() {
 63         return name;
 64     }
 65
 66     public void setName(String name) {
 67         this.name = name;
 68     }
 69
 70     public int getAge() {
 71         return age;
 72     }
 73
 74     public void setAge(int age) {
 75         this.age = age;
 76     }
 77
 78     public double getSalary() {
 79         return salary;
 80     }
 81
 82     public void setSalary(double salary) {
 83         this.salary = salary;
 84     }
 85
 86     public String execute() {
 87         System.out.println("name=" + name + "\nage=" + age
 88                 + "\nsalary=" + salary);
 89         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         }
108         return "success";
109     }
110
111 }

配置文件修改如下:

 1 <bean id="messageBean" class="com.hlcui.dao.MessageBean">
 2         <property name="name">
 3             <value>Tom</value>
 4         </property>
 5         <property name="age">
 6             <value>27</value>
 7         </property>
 8         <property name="salary">
 9             <value>12000</value>
10         </property>
11         <property name="someList">
12             <list>
13                 <value>aaaaList</value>
14                 <value>bbbbList</value>
15                 <value>ccccList</value>
16             </list>
17         </property>
18         <property name="someSet">
19             <set>
20                 <value>111</value>
21                 <value>222</value>
22                 <value>333</value>
23             </set>
24         </property>
25         <property name="someMap">
26             <map>
27                 <entry key="1" value="java"></entry>
28                 <entry key="2" value="c++"></entry>
29                 <entry key="3" value="c#"></entry>
30             </map>
31         </property>
32         <property name="props">
33             <props>
34                 <prop key="username">root</prop>
35                 <prop key="password">root</prop>
36             </props>
37         </property>
38     </bean>
39     

运行测试方法:

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

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

修改配置文件内容如下:

 1 <util:list id="someList">
 2         <value>aaaaList</value>
 3         <value>bbbbList</value>
 4         <value>ccccList</value>
 5     </util:list>
 6     <util:set id="someSet">
 7         <value>111</value>
 8         <value>222</value>
 9         <value>333</value>
10     </util:set>
11     <util:map id="someMap">
12         <entry key="1" value="java"></entry>
13         <entry key="2" value="c++"></entry>
14         <entry key="3" value="c#"></entry>
15     </util:map>
16     <util:properties id="props">
17         <prop key="username">root</prop>
18         <prop key="password">root</prop>
19     </util:properties>
20     <bean id="messageBean" class="com.hlcui.dao.MessageBean">
21         <property name="name">
22             <value>Tom</value>
23         </property>
24         <property name="age">
25             <value>27</value>
26         </property>
27         <property name="salary">
28             <value>12000</value>
29         </property>
30         <property name="someList" ref="someList"></property>
31         <property name="someSet" ref="someSet"></property>
32         <property name="someMap" ref="someMap"></property>
33         <property name="props" ref="props"></property>
34 </beans>

运行测试方法:

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

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

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

1 name=Jack
2 age=30
3 salary=15000

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

1 <!-- 加载配置文件user.properties -->
2     <util:properties id="user" location="classpath:user.properties"/>
3     

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

3:运行测试方法

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

三:spring注入空值

1:修改配置文件

1 <!-- 配置MessageBean对象 -->
2     <bean id="messageBean" class="com.hlcui.dao.MessageBean">
3         <property name="name">
4             <null/>
5         </property>
6         <property name="age" value="#{user.age}"></property>
7         <property name="salary" value="#{user.salary}"></property>
8     </bean>

2:运行测试方法

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

转载于:https://www.cnblogs.com/warrior4236/p/6055856.html

Spring学习总结四——SpringIOC容器四相关推荐

  1. Spring学习(四)IOC详解

    本文借鉴:Spring学习(特此感谢!) 一.简介 概念:控制反转是一种通过描述(在 Java 中可以是 XML 或者注解)并通过第三方(Spring)去产生或获取特定对象的方式.(被动创建) 优势: ...

  2. spring学习笔记(一)创建对象的四种方式

    spring学习笔记(一)创建对象的四种方式 一.简介 ​ Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架. ​ 所谓IoC就是Iversion of Control,控制反 ...

  3. 第四阶段--Spring学习-02

    第四阶段--Spring学习 7.IOC/DI配置管理第三方bean 7.1 环境准备 7.2 对数据源进行配置管理思路: 7.3 实现Druid管理 步骤1:导入`druid`的依赖坐标 步骤2:配 ...

  4. 第四阶段--Spring学习-03

    第四阶段--Spring学习 13.AOP简介 13.1 什么是AOP? 13.2 AOP作用 13.3 AOP核心概念 14.AOP入门案例 14.1 AOP入门案例思路分析 14.2 环境准备 1 ...

  5. 第四阶段--Spring学习-01

    第四阶段--Spring学习 1.概述 2.Spring相关概念 2.1 初识Spring 2.2 Spring系统架构 2.2.1 系统架构图 2.2.3 Spring核心概念-IOC.IOC容器. ...

  6. 【Spring学习05】四种xml配置注入方式

    本文博客地址:http://blog.csdn.net/soonfly/article/details/68507615 (转载请注明出处) 平常应用Spring开发中,用得最多的是容器.spring ...

  7. docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器

    不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...

  8. spring容器扩展功能之一:spring加载ApplicationContext.xml的四种方式

    容器加载Bean的常见两个类ApplicationContext和BeanFactory, 一.首先,看看spring中加载配置在xml中的Bean对象到容器 spring 中加载xml配置文件的方式 ...

  9. 【Spring学习】IOC容器

    1.IOC的理论背景 我们知道在面向对象设计的软件系统中,它的底层都是由N个对象构成的,各个对象之间通过相互合作,最终实现系统地业务逻辑. 图1 软件系统中耦合的对象 如果我们打开机械式手表的后盖,就 ...

  10. 让大学生校招逆袭的Spring三十五问,四万字详解分析(堪称2022年大学生毕业面试指南)

    有人说,"Java程序员都是Spring程序员",我不太赞成这个观点,但是这也可以看出Spring在Java世界里举足轻重的作用. 基础 1.Spring是什么?特性?有哪些模块? ...

最新文章

  1. linux shell (()) 双括号运算符使用
  2. 四旋翼飞行器旋转矩阵公式推导!
  3. ajax中迭代是什么意思,Ajax 局部刷新迭代器的内容
  4. Spring注解依赖注入的三种方式的优缺点以及优先选择
  5. 中职计算机英语c答案,中职高考计算机试题及答案-20210622105004.docx-原创力文档...
  6. 大数据 自学视频资料,纯分享
  7. java学习笔记_Java大白话学习笔记(01)—数组以及内存图解
  8. Luarocks 安装艰难过程
  9. Native Instruments Maschine 2 v2.14.7 WiN-MAC 节奏音乐制作软件含拓展
  10. 参加第五届“软件杯”记录
  11. 服务器mgmt口监控协议,服务器如何查看mgmt地址
  12. 顺序查找与二分查找时间复杂度的比较
  13. C语言实现房贷计算器
  14. 各种说明方法的答题格式_说明方法的作用答题格式
  15. 腾讯云增值税发票识别
  16. window10系统jdk1.8改成1.6
  17. 拙作《互联网时代的软件革命--SaaS架构设计》上市了
  18. k8s中部署traefik并开启https支持
  19. SQL Server2000安装文件挂起错误解决办法
  20. SIMO EMS 技术支持

热门文章

  1. 词云python灿烈,Python jieba分词、词云、文件读取、函数调用、匿名函数
  2. MyBatis Generator.xml详解
  3. maven 强制jdk的版本
  4. S5P4418iNand清空方法
  5. atitit.提高开发效率---mda 革命性的软件开发方法
  6. JavaScript中defer 和onload的执行顺序
  7. TurboFan的故事
  8. 在anaconda环境下搭建python3.5 + jupyter sparkR,scala,pyspark
  9. 第二季-专题12-通过按键玩中断
  10. Docker客户端与守护进程