Spring框架学习(二)
一、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方法,控制台输出

说明利用表达式注入属性值成功
Spring框架学习(二)的更多相关文章
- Spring框架学习(二)
一.依赖注入的三种注入方式 Spring框架为我们提供了三种注入方式:set注入.构造方法注入和接口注入. 1.set注入 规律:无论给什么赋值,配置文件中<property>标签的nam ...
- spring框架学习(二)——注解方式IOC/DI
什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分 ...
- Spring框架学习总结(上)
目录 1.Spring的概述 2.Spring的入门(IOC) 3.Spring的工厂类 4.Spring的配置 5.Spring的属性注入 6.Spring的分模块开发的配置 @ 1.Spring的 ...
- Spring框架学习之IOC(二)
Spring框架学习之IOC(二) 接着上一篇的内容,下面开始IOC基于注解装配相关的内容 在 classpath 中扫描组件 <context:component-scan> 特定组件包 ...
- Spring框架学习一
Spring框架学习,转自http://blog.csdn.net/lishuangzhe7047/article/details/20740209 Spring框架学习(一) 1.什么是Spring ...
- Spring框架学习1
AnonymouL 兴之所至,心之所安;尽其在我,顺其自然 新随笔 管理 Spring框架学习(一) 阅读目录 一. spring概述 核心容器: Spring 上下文: Spring AOP ...
- Spring框架学习笔记(1)
Spring 框架学习笔记(1) 一.简介 Rod Johnson(spring之父) Spring是分层的Java SE/EE应用 full-stack(服务端的全栈)轻量级(跟EJB比)开源框架, ...
- Struts2框架学习(二) Action
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...
- spring框架学习(三)junit单元测试
spring框架学习(三)junit单元测试 单元测试不是头一次听说了,但只是听说从来没有用过.一个模块怎么测试呢,是不是得专门为一单元写一个测试程序,然后将测试单元代码拿过来测试? 我是这么想的.学 ...
- spring 框架学习网站
spring 框架学习网站 NO1 http://www.mkyong.com NO2 https://spring.io/docs/reference
随机推荐
- ConcurrentHashMap内存泄漏问题
问题背景 上周,同事写了一段ConcurrentHashMap的测试代码,说往map里放了32个元素就内存溢出了,我大致看了一下他的代码及运行的jvm参数,觉得很奇怪,于是就自己捣鼓了一下.首先上一段 ...
- C#设计模式(2)——简单工厂模式
一.概念:简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创 ...
- com.panie 项目开发随笔_前后端框架考虑(2016.12.8)
(一) 近日和一同学联系,说了我想要做一个网站的打算.她很感兴趣.于是我们协商了下,便觉得一起合作.她写前端,我写后台.因为我对于前端样式设计并不怎么熟悉. (二) 我们决定先做一个 个人博客. 网上 ...
- iframe 跨域相互操作
我们在开发后台管理系统时可能会经常要跟 iframe 打交道,因为现在大部分后台管理系统都是页面内嵌iframe,所以有时候两者之间就难免要互相通信,但浏览器为了安全的原因,所以就禁止了不同域的访问, ...
- 测试或运维工作过程中最常用的几个linux命令?
大家在测试工作过程中,可能会遇到需要你去服务器修改一些配置文件,譬如说某个字段的值是1 则关联老版本,是0则关联新版本,这时候你可能就需要会下vi的命令操作:或者查看session设置的时长,可能需 ...
- js获取当前系统时间
Js获取当前日期时间及其它操作var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份 ...
- SQLAlchemy(一)
说明 SQLAlchemy只是一个翻译的过程,我们通过类来操作数据库,他会将我们的对应数据转换成SQL语句. 运用ORM创建表 #!/usr/bin/env python #! -*- coding: ...
- crodova打包apk个人总结
1.安装nodejs 2.安装 cordova npm install -g cordova 3.安装Java JDK,官网下载地址 系统变量→新建 JAVA_HOME 变量 . 变量值填写jdk的安 ...
- FineUI配置文件
<configuration> <configSections> <section name="FineUI" type="FineUI.C ...
- windows多线程编程实现 简单(1)
内容:实现win32下的最基本多线程编程 使用函数: #CreateThread# 创建线程 HANDLE WINAPI CreateThread( LPSECURITY_ATTRIBUTES lpT ...