[Spring学习笔记 2 ]装配各种类型的属性 map,list,array,null,properties
一.spring Ioc容器补充(1)
Spring Ioc容器 DI(依赖注入):
注入的方式:设值方法注入setter(属性注入)/构造子注入(构造函数传入依赖的对象)/字段注入field(注解)/接口注入out
装配的方式:手动装配<property>,<constructor-arg>,@Autowired,@Resource/自动装配 1.装配各种类型的属性:
A、简单属性value属性或者value元素 <bean id="person" class="com.lspring.step2.Person">
<property name="name" value="liyy"></property>
<!-- property元素中的内容叫属性值,会自动把value描述的值转换成对应属性的类型 -->
<property name="age" >
<value>30</value>
</property>
<property name="tel"><value>ABCD</value></property>
<!-- 也可以使用value装配一些Spring支持的类型 -->
<property name="homePage"><value>http://google.com</value></property>
</bean> B、引用其它bean,使用ref属性或者ref标签
<!--ref引用其它的bean,local表示引用本容器中的bean,parent表示引用父容器中的某个bean,bean表示先在当前容器中找,找不到再到父容器中找 -->
<property name="parent">
<ref bean="person_c"></ref>
</property> C、使用内部bean <property name="parent">
<bean class="com.lspring.step2.Person">
<constructor-arg value="Jerry"></constructor-arg>
<constructor-arg>
<value>33</value>
</constructor-arg>
</bean>
</property> D、使用集合/装配集合
1).数组
代码:
private String[] favs; public String[] getFavs() {
return favs;
} public void setFavs(String[] favs) {
this.favs = favs;
} xml配置:
<!-- 装配数组 -->
<property name="favs">
<array>
<value>足球</value>
<value>篮球</value>
<value>排球</value>
</array>
</property> 2).装配list
private List<String> school; public List<String> getSchool() {
return school;
} public void setSchool(List<String> school) {
this.school = school;
} <!-- 装配list集合 -->
<property name="school">
<list>
<value>中华第一小学</value>
<value>中华第一高中</value>
<value>中华第一大学</value>
</list>
</property> 3).装配set 不接受重复的值,只显示一条重复的传下
private Set<String> cities; public Set<String> getCities() {
return cities;
} public void setCities(Set<String> cities) {
this.cities = cities;
}
<property name="cities">
<set>
<value>shanghai</value>
<value>shanghai</value>
<value>shanghai</value>
</set>
</property> E.装配Map private Map<String, Double> scores; public Map<String, Double> getScores() {
return scores;
} public void setScores(Map<String, Double> scores) {
this.scores = scores;
}
<!-- 装配Map -->
<property name="scores">
<map>
<entry key="语文" value="50"></entry>
<entry key="外文" value="30"></entry>
<!-- 也可以使用key-ref,和value-ref来指向其他的bean -->
</map>
</property> F.装配properties
private Properties properties; public Properties getProperties() {
return properties;
} public void setProperties(Properties properties) {
this.properties = properties;
} <!-- 装配属性类型 -->
<!-- <property name="properties"> <props> <prop key="qq">1213343</prop>
<prop key="msn">kkk@qqq.com</prop> </props> </property> -->
<!-- 在value中直接使用值对作为属性内容 -->
<property name="properties">
<value>
qq=133234
msn=1312@dfjk.com
</value>
</property> G.装配空值
private Integer age=25;
默认给age赋初值 <bean id="person_null" class="com.lspring.step2.Person">
<property name="name" value="小哥李"></property>
<property name="age">
<!-- 使用nul标签来指定空值。 -->
<null></null>
</property>
</bean>
代码如下:Person.java PersonDao.java
package com.lspring.step2; import java.net.URL;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.Vector; public class Person {
private String name;
private Integer age=;
private String tel;
private Person parent;
private String[] favs;
private List<String> school = new Vector();
private Set<String> cities;
private Properties properties; public Properties getProperties() {
return properties;
} public void setProperties(Properties properties) {
this.properties = properties;
} private Map<String, Double> scores; public Map<String, Double> getScores() {
return scores;
} public void setScores(Map<String, Double> scores) {
this.scores = scores;
} public Set<String> getCities() {
return cities;
} public void setCities(Set<String> cities) {
this.cities = cities;
} public List<String> getSchool() {
return school;
} public void setSchool(List<String> school) {
this.school = school;
} public String[] getFavs() {
return favs;
} public void setFavs(String[] favs) {
this.favs = favs;
} private URL homePage; public URL getHomePage() {
return homePage;
} public void setHomePage(URL homePage) {
this.homePage = homePage;
} public String getName() {
return name;
} public Person(String name, Integer age) {
super();
this.name = name;
this.age = age;
} public Person() {
super();
System.out.println("初始化person!");
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public String getTel() {
return tel;
} public void setTel(String tel) {
this.tel = tel;
} public Person getParent() {
return parent;
} public void setParent(Person parent) {
this.parent = parent;
} @Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", tel=" + tel + ", parent=" + parent + ", favs=" + Arrays.toString(favs) + ", school=" + school + ", cities=" + cities + ", properties=" + properties + ", scores=" + scores + ", homePage=" + homePage + "]";
}
}
package com.lspring.step2; import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class PersonDao {
@Test
public void injectTest(){
@SuppressWarnings("resource")
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans_step2.xml");
System.out.println(applicationContext.getBean("person"));
System.out.println(applicationContext.getBean("person_c"));
Person person = (Person) applicationContext.getBean("person");
//Spring 会把集合类型,初始化时统一使用某种类型
System.out.println(person.getSchool().getClass());
System.out.println("person_null:"+applicationContext.getBean("person_null"));
} }
xml文件如下:beans_step2.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<bean id="person_c" class="com.lspring.step2.Person">
<constructor-arg>
<value>Tom</value>
</constructor-arg>
<constructor-arg value="22"></constructor-arg>
<property name="parent">
<bean class="com.lspring.step2.Person">
<constructor-arg value="Jerry"></constructor-arg>
<constructor-arg>
<value>33</value>
</constructor-arg>
</bean>
</property>
</bean> <bean id="person" class="com.lspring.step2.Person">
<property name="name" value="liyy"></property>
<!-- property元素中的内容叫属性值,会自动把value描述的值转换成对应属性的类型 -->
<property name="age">
<value>30</value>
</property>
<property name="tel">
<value>ABCD</value>
</property>
<!-- 也可以使用value装配一些Spring支持的类型 -->
<property name="homePage">
<value>http://google.com</value>
</property>
<!-- 1. <property name="parent" ref="person_c"></property>=2. <property
name="parent"><ref bean="person_c"/></property> -->
<!--ref引用其它的bean,local表示引用本容器中的bean,parent表示引用父容器中的某个bean,bean表示先在当前容器中找,找不到再到父容器中找 -->
<property name="parent">
<ref bean="person_c"></ref>
</property>
<!-- 装配数组 -->
<property name="favs">
<array>
<value>足球</value>
<value>篮球</value>
<value>排球</value>
</array>
</property>
<!-- 装配list集合 -->
<property name="school">
<list>
<value>中华第一小学</value>
<value>中华第一高中</value>
<value>中华第一大学</value>
</list>
</property>
<!-- 装配set集合 -->
<property name="cities">
<set>
<value>shanghai</value>
<value>shanghai</value>
<value>shanghai</value>
</set>
</property>
<!-- 装配Map -->
<property name="scores">
<map>
<entry key="语文" value="50"></entry>
<entry key="外文" value="30"></entry>
<!-- 也可以使用key-ref,和value-ref来指向其他的bean -->
</map>
</property>
<!-- 装配属性类型 -->
<!-- <property name="properties"> <props> <prop key="qq">1213343</prop>
<prop key="msn">kkk@qqq.com</prop> </props> </property> -->
<!-- 在value中直接使用值对作为属性内容 -->
<property name="properties">
<value>
qq=133234
msn=1312@dfjk.com
</value>
</property>
</bean>
<bean id="person_null" class="com.lspring.step2.Person">
<property name="name" value="小哥李"></property>
<property name="age">
<!-- 使用nul标签来指定空值。 -->
<null></null>
</property>
</bean>
</beans>
[Spring学习笔记 2 ]装配各种类型的属性 map,list,array,null,properties的更多相关文章
- Spring学习笔记--自动装配Bean属性
Spring提供了四种类型的自动装配策略: byName – 把与Bean的属性具有相同名字(或者ID)的其他Bean自动装配到Bean的对应属性中. byType – 把与Bean的属性具有相同类型 ...
- Spring学习笔记-高级装配-03
主要内容: ●Spring profile ●条件化的bean声明 ●自动装配与歧义性 ● Spring表达式语言 本章介绍一些高级的装配技术,可实现更为高级的装配功能. 环境与profile 软件开 ...
- Linux 程序设计学习笔记----Linux下文件类型和属性管理
转载请注明出处:http://blog.csdn.net/suool/article/details/38318225 部分内容整理自网络,在此感谢各位大神. Linux文件类型和权限 数据表示 文件 ...
- spring学习笔记(一) Spring概述
博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书. 强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...
- 不错的Spring学习笔记(转)
Spring学习笔记(1)----简单的实例 --------------------------------- 首先需要准备Spring包,可从官方网站上下载. 下载解压后,必须的两个包是s ...
- Spring学习笔记之依赖的注解(2)
Spring学习笔记之依赖的注解(2) 1.0 注解,不能单独存在,是Java中的一种类型 1.1 写注解 1.2 注解反射 2.0 spring的注解 spring的 @Controller@Com ...
- Spring学习笔记(一)
Spring学习笔记(一) 这是一个沉淀的过程,大概第一次接触Spring是在去年的这个时候,当初在实训,初次接触Java web,直接学习SSM框架(当是Servlet都没有学),于是,养成了一个很 ...
- Spring学习笔记2——表单数据验证、文件上传
在上一章节Spring学习笔记1——IOC: 尽量使用注解以及java代码中,已经搭建了项目的整体框架,介绍了IOC以及mybatis.第二节主要介绍SpringMVC中的表单数据验证以及文件上传. ...
- 【Spring学习笔记-MVC-9】SpringMVC数据格式化之日期转换@DateTimeFormat
作者:ssslinppp 1. 摘要 本文主要讲解Spring mvc数据格式化的具体步骤: 并讲解前台日期格式如何转换为java对象: 在之前的文章<[Spring学习笔记-MVC ...
随机推荐
- jquery 控制css样式
一.CSS 1.css(name) 访问第一个匹配元素的样式属性. 返回值 String 参数 name (String) : 要访问的属性名称 示例: $("p").css(&q ...
- Annotation Type EnableTransactionManagement
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/annotation/Ena ...
- DICOM-RT:放疗领域中的各种影像
背景: DICOM-RT系列博文着眼于DICOM3.0中对放疗领域的补充标准,即DICOM-RT.为了方便兴许对DICOM-RT中相关IOD.SOP概念的理解,专栏最近做了放疗相关知识点的普及. PS ...
- 从数据库中取 datetime类型,界面展示 yyyy-MM-dd
//处理提问时间,去掉时分秒 if(array!=null && array.size()>0){ for(int i=0;i<array.size();i++){ JSO ...
- 在使用Vs2013打开Vs2008的解决方案时出现了以下错误:此版本的应用程序不支持其项目类型(.csproj)
在使用Vs2013打开Vs2008的解决方案时出现了以下错误: 无法打开 因为此版本的应用程序不支持其项目类型(.csproj). 在网络上找到解决方案: 命令行或者Vs自带的命令提示符输入:deve ...
- 如何实现json字符串和 BsonDocument的互相转换
String to BsonDocument string json = "{ 'foo' : 'bar' }"; MongoDB.Bson.BsonDocument docume ...
- WIN7系统开题提示loli.vbs 操作超时怎么办
这个是魔兽争霸的一个病毒,但是该病毒没有任何危害性,只是作为检测进入房间的地图是否含有作弊脚本,主动提供了清除工具 搜索loli,删除所有bat和exe,vbs文件 如果魔兽争霸3安装目录存在 ...
- STL 笔记(四) 迭代器 iterator
stl 中迭代器能够理解为面向对象版本号的广义指针,提供了对容器中的对象的訪问方法,能够遍历容器全部元素.也能够訪问随意元素.stl 迭代器有下面五种: Input iterators 仅仅读,输 ...
- Mysql数据库常用分库和分表方式
http://blog.csdn.net/clevercode/article/details/50877580 1 分库 1.1 按照功能分库 按照功能进行分库.常见的分成6大库: 1 用户类 ...
- Layer文件上传操作
1:upload.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...