Spring学习总结四——SpringIOC容器四
一: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容器四相关推荐
- Spring学习(四)IOC详解
本文借鉴:Spring学习(特此感谢!) 一.简介 概念:控制反转是一种通过描述(在 Java 中可以是 XML 或者注解)并通过第三方(Spring)去产生或获取特定对象的方式.(被动创建) 优势: ...
- spring学习笔记(一)创建对象的四种方式
spring学习笔记(一)创建对象的四种方式 一.简介 Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架. 所谓IoC就是Iversion of Control,控制反 ...
- 第四阶段--Spring学习-02
第四阶段--Spring学习 7.IOC/DI配置管理第三方bean 7.1 环境准备 7.2 对数据源进行配置管理思路: 7.3 实现Druid管理 步骤1:导入`druid`的依赖坐标 步骤2:配 ...
- 第四阶段--Spring学习-03
第四阶段--Spring学习 13.AOP简介 13.1 什么是AOP? 13.2 AOP作用 13.3 AOP核心概念 14.AOP入门案例 14.1 AOP入门案例思路分析 14.2 环境准备 1 ...
- 第四阶段--Spring学习-01
第四阶段--Spring学习 1.概述 2.Spring相关概念 2.1 初识Spring 2.2 Spring系统架构 2.2.1 系统架构图 2.2.3 Spring核心概念-IOC.IOC容器. ...
- 【Spring学习05】四种xml配置注入方式
本文博客地址:http://blog.csdn.net/soonfly/article/details/68507615 (转载请注明出处) 平常应用Spring开发中,用得最多的是容器.spring ...
- docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器
不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...
- spring容器扩展功能之一:spring加载ApplicationContext.xml的四种方式
容器加载Bean的常见两个类ApplicationContext和BeanFactory, 一.首先,看看spring中加载配置在xml中的Bean对象到容器 spring 中加载xml配置文件的方式 ...
- 【Spring学习】IOC容器
1.IOC的理论背景 我们知道在面向对象设计的软件系统中,它的底层都是由N个对象构成的,各个对象之间通过相互合作,最终实现系统地业务逻辑. 图1 软件系统中耦合的对象 如果我们打开机械式手表的后盖,就 ...
- 让大学生校招逆袭的Spring三十五问,四万字详解分析(堪称2022年大学生毕业面试指南)
有人说,"Java程序员都是Spring程序员",我不太赞成这个观点,但是这也可以看出Spring在Java世界里举足轻重的作用. 基础 1.Spring是什么?特性?有哪些模块? ...
最新文章
- linux shell (()) 双括号运算符使用
- 四旋翼飞行器旋转矩阵公式推导!
- ajax中迭代是什么意思,Ajax 局部刷新迭代器的内容
- Spring注解依赖注入的三种方式的优缺点以及优先选择
- 中职计算机英语c答案,中职高考计算机试题及答案-20210622105004.docx-原创力文档...
- 大数据 自学视频资料,纯分享
- java学习笔记_Java大白话学习笔记(01)—数组以及内存图解
- Luarocks 安装艰难过程
- Native Instruments Maschine 2 v2.14.7 WiN-MAC 节奏音乐制作软件含拓展
- 参加第五届“软件杯”记录
- 服务器mgmt口监控协议,服务器如何查看mgmt地址
- 顺序查找与二分查找时间复杂度的比较
- C语言实现房贷计算器
- 各种说明方法的答题格式_说明方法的作用答题格式
- 腾讯云增值税发票识别
- window10系统jdk1.8改成1.6
- 拙作《互联网时代的软件革命--SaaS架构设计》上市了
- k8s中部署traefik并开启https支持
- SQL Server2000安装文件挂起错误解决办法
- SIMO EMS 技术支持