02_Spring控制反转案例快速入门
Spring控制反转案例快速入门
1.下载Spring最新开发包
http://www.springsource.org/download/community 下载spring3.2 的开发包
目录结构(spring-framework-3.2.0.RELEASE)
* docs 存放API和 规范文档
* libs 开发jar包
* schemas 开发过程中需要导入xml的schema 约束
我们还有一个依赖包(spring-framework-3.0.2.RELEASE-dependencies),里面有开发涉及的所有jar包,以后开发可以从这里面找jar包。
2.复制Spring开发 jar包到工程
复制核心容器包含jar包 (beans、core、context、expression language)
spring 的 jar包 需要依赖 commons-logging的 jar (commons-logging 类似 slf4j 是通用日志组件,需要整合 log4j ),拷贝log4j.properties
* 提示:spring3.0.X 版本 asm jar包 已经被合并到 spring core包中
3.理解IoC控制反转和DI依赖注入
IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建UserService对象的控制权,交由Spring框架管理,简单说,就是创建UserService对象控制权被反转到了Spring框架
DI:Dependency Injection 依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件
面试题: IoC 和 DI的区别?
IoC 控制反转,指将对象的创建权,反转到Spring容器 , DI 依赖注入,指Spring创建对象的过程中,将对象依赖属性通过配置进行注入
4.编写Spring核心配置文件
在src目录创建 applicationContext.xml
在docs\spring-framework-reference\html 找到 xsd-config.html,在最下方引入bean的约束
<beansxmlns="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">
<!-- 配置使用哪个实现类 对 IHelloService 进行实例化-->
<!-- 配置实现类HelloServiceImpl,定义名称helloService-->
<beanid="helloService"class="cn.itcast.spring.a_quickstart.HelloServiceImpl">
<!-- helloService 依赖 info属性 -->
<!-- 通过property配置spring创建 helloService对象时,自动调用 setInfo方法 完成属性注入 -->
<property name="info" value="传智播客"></property></bean>
5.在程序中读取Spring配置文件,通过Spring框架获得Bean,完成相应操作
加载classpath(src): new ClassPathXmlApplicationContext("applicationContext.xml");
加载磁盘路径:new FileSystemXmlApplicationContext("applicationContext.xml");
publicstaticvoid main(String[] args){
// 传统写法 (紧密耦合)
HelloServiceImpl helloService =newHelloServiceImpl();
// 手动调用 set 方法为 info 进行赋值
helloService.setInfo("spring");helloService.sayHello();
// 工厂+反射 +配置文件 ,实例化 IHelloService的对象
ApplicationContext applicationContext =newClassPathXmlApplicationContext("applicationContext.xml");
// 通过工厂根据配置名称获得实例对象
IHelloService iHelloService2 =(IHelloService) applicationContext.getBean("helloService");
iHelloService2.sayHello();
// 控制反转,对象的创建权被反转到 Spring框架
}
// 接口
publicinterfaceIHelloService{
publicvoid sayHello();
}
// 实现类
publicclassHelloServiceImplimplementsIHelloService{
private String info;
publicvoid sayHello(){
System.out.println("hello,"+info);
}
// HelloServiceImpl 的实例 依赖 String 类型 info 数据
// UML OOD设计中 依赖强调 方法中参数
public void setInfo(String info) {
this.info = info;
}}
02_Spring控制反转案例快速入门的更多相关文章
- Spring IOC - 控制反转(依赖注入) - 入门案例 - 获取对象的方式 - 别名标签
1. IOC - 控制反转(依赖注入) 所谓的IOC称之为控制反转,简单来说就是将对象的创建的权利及对象的生命周期的管理过程交 由Spring框架来处理,从此在开发过程中不再需要关注对象的创建和生命周 ...
- 通过angularJS官方案例快速入门
官方案例-angular-phonecat angularJS官方提供了一个官方案例给大家进行循序渐进的学习,但是如果之前没有接触过node.js以及git的同学这个案例拿着也无从下手-这里就介绍一下 ...
- Spring IoC反转控制的快速入门
* 下载Spring最新开发包 * 复制Spring开发jar包到工程 * 理解IoC反转控制和DI依赖注入 * 编写Spring核心配置文件 * 在程序中读取Spring配置文件,通过Spring框 ...
- 大数据技术之_09_Flume学习_Flume概述+Flume快速入门+Flume企业开发案例+Flume监控之Ganglia+Flume高级之自定义MySQLSource+Flume企业真实面试题(重点)
第1章 Flume概述1.1 Flume定义1.2 Flume组成架构1.2.1 Agent1.2.2 Source1.2.3 Channel1.2.4 Sink1.2.5 Event1.3 Flum ...
- Elasticsearch快速入门案例
写在前面的话:读书破万卷,编码如有神-------------------------------------------------------------------- 参考内容: <Ela ...
- Part1-HttpClient快速入门案例
前言 最近这段时间在学习爬虫方面的知识,接触了几个优秀的爬虫框架,也爬取了一些自己喜欢网站的信息.通过官网学习HttpClient的过程中,希望通过写此博客来巩固自己的学习,也为有需要的人提供学习帮助 ...
- 控制反转和依赖注入(对IOC,DI理解+案例)
理解 控制反转说的官方一点就是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其实就是一种设计思想,大概思想就是把设计好的对象交给容器控制,而不是在你内部直接控制. 依赖注入是控制反 ...
- 依赖注入 DI 控制反转 IOC 概念 案例 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(9)|Control Flows流程控制]
[易学易懂系列|rustlang语言|零基础|快速入门|(9)] 有意思的基础知识 Control Flows 我们今天再来看看流程控制. 条件控制 if-else if -else: / Simpl ...
随机推荐
- Three.js - 网页3D应用的普及已经指日可待了
Three.js可以高效实现3D效果,真不赖.
- 【转】Web UI自动化测试原理
目前市面上有很多Web UI自动化测试框架,比如WatiN, Selinimu,WebDriver,还有VS2010中的Coded UI等等. 这些框架都可以操作Web中的控件,模拟用户输入,点击等 ...
- angularjs 相关资料
1.angularjs 框架结构 bootstrap process :http://www.oschina.net/translate/angularjs-the-next-big-thing?pr ...
- Python标准库之核心模块学习记录
内建函数和异常 包括__builtin__模块和exceptions模块 操作系统接口模块 包括提供文件和进程处理功能的os模块,提供平台独立的文件名处理(分拆目录名,文件名,后缀等)的os.path ...
- linux端口
1.查看开放的端口 netstat -anp 来查看哪些端口被打开. 注:加参数'-n'会将应用程序转为端口显示,即数字格式的地址,如:nfs->2049, ftp->21,因此可以开启两 ...
- jQuery上传插件,文件上传测试用例
jQuery上传插件,文件上传测试用例 jQuery File Upload-jQuery上传插件介绍http://www.jq22.com/jquery-info230 jQuery File Up ...
- jQuery.isNumeric() 和 js isNaN()
jQuery.isNumeric( value ) Description: 判断指定参数是否是一个数字值(字符串形式的数字也符合条件),返回 true 或者 false. Example: $.is ...
- PHP中header函数的用法及其注意重点是什么呢
1.使用header函数进行跳转页面: header('Location:'.$url); 其中$url就是将要跳转的url了. 这种用法的注意事项有以下几点: •Location和":&q ...
- Android 仿美团网,大众点评购买框悬浮效果之修改版
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17761431),请尊重他人的辛勤劳动成果,谢谢! 我之前写 ...
- linux下对sh文件的操作
1.创建test.sh文件 touch test.sh 2.编辑sh文件 vi test.sh(i:插入 | esc:退出insert模式 | wq+回车:退出) 3.保存退出 敲击esc, 然后输入 ...