一、Spring IOC参数值注入

1.注入基本值

1.1)<value></value>元素可以通过字符串指定属性或构造参数的值。容器将字符串从java.lang.String类型转换为实际的属性或者参数类型后给bean对象注入。

    <bean id="dataSource" class="com.spring.dao.JDBCDataSource">
            <property name="username" value="root">
          <value>root</value>
       </property>
<property name="password">
          <value>123456</value>
       </property>
</bean>

1.2)也可以通过value属性指定基本值

<property name="username" value="root"></property>
<property name="password" value=""></property>

1.3)新建一个类MessageBean

package com.spring.dao;

import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set; public class MessageBean {
private String name;
private String password;
private String phone;
private String gender;
private List<String> list;
private Set<String> set;
private Map<String,Object>map;
private Properties properties; public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public Set<String> getSet() {
return set;
}
public void setSet(Set<String> set) {
this.set = set;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public Properties getProperties() {
return properties;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public void excute(){
System.out.println("name="+name);
System.out.println("password="+password);
System.out.println("phone="+phone);
System.out.println("gender="+gender);
}
}

1.4)在配置文件添加

 <!-- 参数值注入 -->
<bean id="messageBean" class="com.spring.dao.MessageBean">
<property name="name" value="zhangsan"></property>
<property name="password" value="123456"></property>
<property name="phone" value="110"></property>
<property name="gender" value="男"></property>
</bean>

1.5)在测试方法添加testMessageBean()方法

    @Test
public void testMessageBean(){
String con ="applicationContext.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(con);
MessageBean mb = ac.getBean("messageBean",MessageBean.class);
mb.excute();
}

1.6)控制台输出

name=zhansgan
password=123456
phone=110
gender=男

说明值注入成功

2.注入集合

通过<list></list>,<set></set>,<map></map>,<properties></properties>元素可以定义和设置与java类型中

对应的list,set,map,properties属性值

2.1)在MessageBean中添加代码

private List<String> list;
private Set<String> set;
private Map<String,Object>map;
private Properties properties; public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public Set<String> getSet() {
return set;
}
public void setSet(Set<String> set) {
this.set = set;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public Properties getProperties() {
return properties;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
System.out.println("----------------list信息-----------------");
/*
* list集合
*/
for(String s:list){
System.out.println(s);
}
System.out.println("-----------------set信息------------------");
/*
* set集合
*/
for(String s:set){
System.out.println(s);
}
System.out.println("-------------------map信息------------------");
/*
* 循环key取出map value值
*/
Set<String> key = map.keySet();
for(String s:key){
System.out.println(s+"="+map.get(s));
}
System.out.println("--------------------properties信息--------------");
/*
* properties
*/
Set<Object> set = properties.keySet();
for(Object o:set){
System.out.println(o+"="+properties.getProperty(o.toString()));
}

2.2)在配置文件中添加

 <!-- 参数值注入 -->
<bean id="messageBean" class="com.spring.dao.MessageBean">
<property name="name" value="lizhang"></property>
<property name="password" value="123456"></property>
<property name="phone" value="15256597951"></property>
<property name="gender" value="男"></property>
<property name="list">
<list>
<value>zhangsan</value>
<value>lisi</value>
<value>wangwu</value>
</list>
</property>
<property name="set">
<set>
<value>java</value>
<value>php</value>
<value>c</value>
</set>
</property>
<property name="map">
<map>
<entry key="100" value="张三"></entry>
<entry key="101" value="李四"></entry>
<entry key="102" value="王五"></entry>
</map>
</property>
<property name="properties">
<props>
<prop key="name">admin</prop>
<prop key="password">123456</prop>
</props>
</property>
</bean>

2.3)在测试方法执行testMesageBean方法,控制台输出

name=zhansgan
password=123456
phone=110
gender=男

----------------list信息-----------------
zhangsan
lisi
wangwu
-----------------set信息------------------
java
php
c
-------------------map信息------------------
100=张三
101=李四
102=王五
--------------------properties信息--------------
name=admin
password=123456

说明注入集合成功

3.引用方式集合注入

3.1在配置文件添加下面配置

引用方式集合注入配置格式:

<util:list id=""><value></value></util:list>,

<util:set id=""><value></value></util:set>

<util:map id=""><value></value><util:map>

<util:properties id=""><value></value></util:properties>

<!-- 定义集合bean -->
<util:list id="list">
<value>华为</value>
<value>苹果</value>
<value>三星</value>
</util:list> <util:set id="set">
<value>华硕</value>
<value>联想</value>
<value>微星</value>
</util:set> <util:map id="map">
<entry key="1" value="中国"></entry>
<entry key="2" value="美国"></entry>
<entry key="3" value="德国"></entry>
</util:map> <util:properties id="properties">
<prop key="name">root</prop>
<prop key="password">123456</prop>
</util:properties>
<!-- 引用方式注入集合属性 -->
<bean id="message2" class="com.spring.dao.MessageBean">
<property name="list" ref="list"></property>
<property name="set" ref="set"></property>
<property name="map" ref="map"></property>
<property name="properties" ref="properties"></property>
</bean>

3.2)在测试方法中添加testMessageBean2()方法

    @Test
public void testMessageBean2(){
String con = "applicationContext.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(con);
MessageBean mb = ac.getBean("message2",MessageBean.class);
mb.excute();
}

3.3)控制台输出一下信息,引用方式集合注入成功

----------------list信息-----------------
华为
苹果
三星
-----------------set信息------------------
华硕
联想
微星
-------------------map信息------------------
1=中国
2=美国
3=德国
--------------------properties信息--------------
name=root
password=123456

4.利用Spring表达式注入属性值

Spring引入了一种表达式语言,语法上和EL表达式很相似,这种表达式语言可以用于定义基于xml和注解配置的bean,注入一个properties文件信息

4.1) src下新建一个db.properties文件,在文件里写入

name=root123

password=123456

4.2)修改配置文件为以下(name="name" ,"name"要和messageBean里属性名一致 private String name;)

<util:properties id="properties" location="classpath:db.properties">
</util:properties>
<!-- 引用方式注入集合属性 -->
<bean id="message2" class="com.spring.dao.MessageBean">
<property name="name" value="#{properties.name}"></property>
<property name="password" value="#{properties.password}"></property>
</bean>

4.3)在测试类中执行testMessageBean2方法,控制台输出

说明利用表达式注入属性值成功

最新文章

  1. Swift 3.0 【Swift 3.0 相较于 Swift 2.2 的变化】
  2. 踩坑事件:windows操作系统下的eclipse中编写SparkSQL不能从本地读取或者保存parquet文件
  3. PHPCMS开启伪静态和织梦开启伪静态的优缺点比较
  4. WIN 程序员的 Linux 互斥类
  5. inline-block 和 float 的区别
  6. 手机wifi密码的保存位置
  7. tableview在第一次显示时会自动relodata
  8. [转] gc tips(3)
  9. Mongodb FAQ fundamentals(基础篇)
  10. XAMPP下的composer的安装
  11. Qt制作Aero特效窗口
  12. TOGAF架构能力框架之架构委员会和架构合规性
  13. PHP操作MySQL对表增加一列(一个字段)
  14. Android轮播图
  15. php----------php安装xhprof扩展和简单使用
  16. 设计shell脚本选项:getopt
  17. [LeetCode&amp;Python] Problem 720. Longest Word in Dictionary
  18. PHP获取中文首字母的函数
  19. SVG:中国地图
  20. redis运维常用的server端命令

热门文章

  1. JS组件系列——BootstrapTable 行内编辑解决方案:x-editable
  2. 如何用TypeScript开发微信小程序
  3. weui 多网页切换效果分析
  4. 基于MemoryCache的缓存辅助类
  5. iOS常用开发技巧
  6. 神经网络与深度学习(3):Backpropagation算法
  7. Downgrade PHP 7 to PHP 5.6 on Ubuntu 16.04
  8. Request —— 让 Node.js http请求变得超简单
  9. MyBatis源码分析(4)—— Cache构建以及应用
  10. Oracle数据库找回密码