spring笔记--依赖注入之针对不同类型变量的几种注入方式
控制反转和依赖注入讲的都是一个概念,只不过是站在了不同的角度,所谓的依赖注入:
是指在运行期,由外部容器动态地将依赖对象注入到组件中。当spring容器启动后,spring容器初始化,创建并管理bean对象,以及销毁它。所以我们只需从容器直接获取Bean对象就行,而不用编写一句代码来创建bean对象。这种现象就称作控制反转,即应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。
下面介绍各种类型属性的注入方式:
新建实体类Student:
public class Student {
//基本数据类型的变量
private String name;
//对象类型的变量,Address类代码省略
private Address address;
//数组类型的变量
private String[] hobby;
//list类型的变量
private List<String> books;
//Map类型的变量
private Map<String,String> cards;
//set类型的变量
private Set<String> movies;
//Properties类型的变量
private Properties info;
public void show(){
System.out.println("name:"+name+"地址:"+address.getAddr());
System.out.println("爱好有:");
for(int i=0;i<hobby.length;i++){
System.out.println(hobby[i]);
}
System.out.println("喜欢的书籍:"+books);
System.out.println("拥有的银行卡"+cards);
System.out.println("喜欢的电影"+movies);
System.out.println("身份信息:"+info);
}
//set方法省略
}
配置文件beans.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.xsd">
<bean id="address" class="com.wang.entity.Address">
<property name="addr" value="青岛"></property>
</bean>
<bean id="student" class="com.wang.entity.Student">
<!--配置基本数据类型 -->
<property name="name" value="张三丰"></property>
<!--配置对象类型 -->
<property name="address" ref="address"></property>
<!--配置数组类型 -->
<property name="hobby" >
<array>
<value>吃饭</value>
<value>睡觉</value>
<value>打豆豆</value>
</array>
</property>
<!--配置list类型 -->
<property name="books">
<list>
<value>时光旅行者的妻子</value>
<value>白发魔女传</value>
<value>谁的青春不迷茫</value>
</list>
</property>
<!--配置map类型 -->
<property name="cards">
<map>
<entry key="农行卡" value="62284832128534"></entry>
<entry key="建行卡" value="62284867867984"></entry>
</map>
</property>
<!--配置set类型 -->
<property name="movies">
<set>
<value>疯狂动物城</value>
<value>叶问3</value>
<value>功夫熊猫</value>
</set>
</property>
<!--配置properties类型-->
<property name="info">
<props>
<prop key="学号">20124280</prop>
<prop key="班级">三年二班</prop>
<prop key="性别">不详</prop>
</props>
</property>
</bean>
</beans>
测试代码:
@Test
public void test1(){
ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
Student s=(Student)context.getBean(Student.class);
s.show();
}
打印结果:
name:张三丰地址:青岛
爱好有:
吃饭
睡觉
打豆豆
喜欢的书籍:[时光旅行者的妻子, 白发魔女传, 谁的青春不迷茫]
拥有的银行卡{农行卡=62284832128534, 建行卡=62284867867984}
喜欢的电影[疯狂动物城, 叶问3, 功夫熊猫]
身份信息:{学号=20124280, 性别=不详, 班级=三年二班}
spring笔记--依赖注入之针对不同类型变量的几种注入方式的更多相关文章
- Spring Boot将Mybatis返回结果转为驼峰的三种实现方式
本文不再更新,可能存在内容过时的情况,实时更新请访问原地址:Spring Boot将Mybatis返回结果转为驼峰的三种实现方式: 我们通常获取Mybatis返回的数据结果时想要将字段以驼峰的形式返回 ...
- Spring笔记——依赖注入
依赖注入有三种方式: 1. 使用构造器注入 2. 使用属性setter方法注入 3. 使用Field注入(用于注解方式) 注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自 ...
- spring mvc:拦截器不拦截静态资源的三种处理方式
方案一.拦截器中增加针对静态资源不进行过滤(涉及spring-mvc.xml) <mvc:resources location="/" mapping="/**/* ...
- spring事务详解(基于注解和声明的两种实现方式)
Spring事务( Transaction ) 事务的概念 事务是一些sql语句的集合,作为一个整体执行,一起成功或者一起失败. 使用事务的时机 一个操作需要多天sql语句一起完成才能成功 程序中事务 ...
- spring bean的init 方法和 destory方法的三种实现方式
1.通过@Bean(initMethod ="initPerson",destroyMethod ="destroyPerson" ) public class ...
- Spring的三种注入
在学习Spring的过程中,其中一个很重要的就是依赖注入DI,在此总结一下 注入方式有三种: 一.构造器注入 二.Set方式注入(重点) 三.扩展方式注入 构造器注入: a.默认使用无参构造函数创建对 ...
- Spring学习笔记--依赖注入
依赖注入和控制反转:http://baitai.iteye.com/blog/792980出自李刚<轻量级 Java EE 企业应用实战> Java应用是一种典型的依赖型应用,它就是由一些 ...
- 【学习笔记】 使用XML配置和注解实现Spring的依赖注入DI (2-3-2)
Spring的四个核心组件 1.beans Bean是包装应用程序自定义对象Object的 Object中保存数据 2.core 3.context 一个Bean的关系集合 4.expression ...
- Spring 学习笔记 ----依赖注入
依赖注入 有三种方式,本文只学习下属性注入. 属性注入 属性注入即通过 setXxx方法()注入Bean的属性值或依赖对象,由于属性注入方式具有可选择性和灵活性高的优点,因此属性注入方式是 ...
随机推荐
- 第16周界面设计PSP总结
计划:需1周完整完成 需求分析:作为一个观众,我希望能够了解每一场的比分结果,随时跟进比赛进程 生成设计文档:暂无 设计复审:暂无与组员进行设计复审 代码规范:Visual Studio2010 具体 ...
- Javascript初学篇章_6(BOM)
BOM 浏览器对象模型 BOM (浏览器对象模型),它提供了与浏览器窗口进行交互的对象 一.window对象 Window对 象表示整个浏览器窗口. 1.系统消息框 alert() alert('he ...
- Visual Studio 2015 如何将全英界面转成中文
1 启动VS2015程序,在菜单栏中找到tools 2 在弹出的下拉窗口中选中options 3 此时弹出的对话框,选中Environment下的international setting 4 点击获 ...
- DES原理
1.DES的描述 为了建立适用于计算机系统的商用密码,美国商业部的国家标准局NBS于1973年5月和1974年8月两次发布通告,向社会征求密码算法.在征得的算法中,由IBM公司提出的算法lucifer ...
- 详解Maple如何公式推导和生成代码
公式推导 直观自然的数学表达式,智能的关联菜单,交互式助手等协助您从容通过推导过程,让您更容易地完成解决方案的开发,快速.无错! 分析 Maple 内置超过大量的计算函数,包括积分变换,微分方程求解器 ...
- PAT/字符串处理习题集(二)
B1024. 科学计数法 (20) Description: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+ ...
- [PHP源码阅读]strlen函数
文章来自:http://www.hoohack.me/2016/02/22/phps-source-analytics-strlen 我在github有对PHP源码更详细的注解.感兴趣的可以围观一下, ...
- 备忘-Sql server Timeout expired 超时时间已到. 达到了最大池大小 错误及Max Pool Size设置
select * from sysprocesses where dbid= db_id('数据库名') 通过此语句可查看目前所有的连接进程 不够了就必须设置Max Pool Size,理论最大值为3 ...
- WCF:传输EntityFramework 实体类的POCO 代理
WCF传输EntityFramework 实体类的POCO 代理 Windows Communication Foundation (WCF) 不能对代理进行直接序列化或反序列化,因为 DataCon ...
- Fiddler调式使用知多少(一)深入研究
Fiddler调式使用(一)深入研究 阅读目录 Fiddler的基本概念 如何安装Fiddler 了解下Fiddler用户界面 理解不同图标和颜色的含义 web session的常用的快捷键 了解we ...