关于Spring的IOC和DI
原始调用模型

Spring的演化过程

Spring的调用过程

=======================================
IoC【理解】【应用】【重点】
1.IoC(Inversion of Control)控制反转
A:控制:控制的双方是什么?谁控制谁?
主控方:Spring
被控方:应用程序所使用的资源
(原始)应用程序控制自己执行操作需要使用的外部资源
(Spring)Spring控制整个程序中所需要使用的外部资源
B.反转:什么是反转?反转什么?
正向:应用程序直接调用资源
反向:应用程序依赖Spring为其提供资源
反转的是资源的控制权
应用程序由主动调用资源,变为被动的等待Spring提供资源
C.有什么好处?
正向缺点:应用程序控制的资源分布在程序的每一个地方
反向的优点:所有的资源都在Spring中,便于管理
总结:Spring反向控制应用程序所需要使用的外部资源。资源受Spring管理,利用率最大化。
2.Spring模型演化过程
A.基于分层设计
UserAction 使用UserService,new UserService()
UserService 使用UserDAO,new UserDAO()
UserDAO
B.工厂模式,使用面向接口编程设计,解决层与层之间的紧耦合
制作接口,制作实现类,制作对象工厂
C.工厂模式+配置
制作XML文件,将实现类配置到XML文件中
读取XML文件中的配置信息,得到实现类的类名
使用反射思想,获取实现类对象 class.newInstance();
D.Spring设计雏形 自动的工厂+配置
工厂由Spring提供,实现类使用XML格式配置
3.IoC基础实例
A.导入jar包(6个)
B.制作log4j对应的配置文件
C.在src目录下创建核心配置文件applicationContext.xml
说明:格式可以从xsd-config.html获取
<?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
">
</beans>
D.将应用程序需要使用的资源配置成Spring的Bean
<!-- Spring管理的资源全部声明到配置文件中 -->
<!-- 所有资源以Bean的形式存在 -->
<!-- bean:声明一个资源Bean -->
<!-- bean:id:用于区分bean的标识 -->
<!-- bean:class:bean对应的模型类名 -->
<bean id="userDao" class="cn.itcast.spring.ioc.UserDao"> </bean>
E.创建ApplicationContext对象
ApplicationContext ctx = new ClassPathXmlApplicationContext("配置文件名");
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
F.获取Bean对象
使用应用上下文对象获取
ctx.getBean("bean的id属性值");
ctx.getBean("userService");
补充:使用文件系统获取配置信息,要求配置文件在工程路径下(少用)
ApplicationContext ctx = new FileSystemXmlApplicationContext("applicationContext.xml");
=================================
DI【理解】【应用】【重点】
1.DI(Dependency Injection)依赖注入指应用程序依赖Spring为其提供运行时所需的资源
2.DI实例
A.在应用程序中声明要使用的资源
private String msg;
B.为其提供setter访问器
public void setMsg(String msg) {
this.msg = msg;
}
C. 在Bean配置中配置该资源对象具有某个属性,属性可以配置多个
<bean id="userService" class="cn.itcast.ioc.helloworld.UserService">
<!-- 在配置中,为该Bean需要注入的资源进行初始化 -->
<!-- property:为该Bean注入属性 -->
<!-- property:name:注入的属性名称(变量名) -->
<property name="msg" value="itcast"/>
</bean>
注意:当配置中出现的属性在Bean类中不存在时,抛出异常
3.IoC与DI区别
同一件事,站在不同角度上看待问题的不同描述
IoC:Spring立场
DI:应用程序立场
关于Spring的IOC和DI的更多相关文章
- spring的IOC,DI及案例详解
一:spring的基本特征 Spring是一个非常活跃的开源框架:它是一个基于Core来架构多层JavaEE系统的框架,它的主要目的是简化企业开发.Spring以一种非侵入式的方式来管理你的代码,Sp ...
- 对Spring中IOC和DI的理解
前几篇讲了Spring中IOC和DI的用法,本篇应该放到三篇之前,但一直没有想到好的讲解方式,后参考https://blog.csdn.net/luoyepiaoxue2014/article/det ...
- 转载百度百科上的强回复,关于spring的IOC和DI
IoC与DI 首先想说说IoC(Inversion of Control,控制倒转).这是spring的核心,贯穿始终.所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命 ...
- Java 反射和内省实现spring的IOC和DI
1.构造两个JavaBean package com.spring.model; public class People { private Car car; public Car getCar() ...
- 总结一下 Spring的IOC、DI
国庆节刚过,应一些朋友的提问,总结一下Spring中IOC也即DI的通俗理解. 网友wm5920解释: IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件 ...
- Spring:Ioc和DI
一.摘要 本文为作者搜集的Spring关于IoC/DI相关知识的记录整理笔记.介绍了IoC(控制反转)是一种设计原则,用于降低代码的耦合度.介绍了IoC是通过BeanDefinitio ...
- spring之IOC和DI实现
Spring核心思想 : IOC控制反转 DI依赖注入 AOP切面编程 IOC思想: 场景描述: 在没有加入spring框架之前我们调取业务层时需要创建对象,例如: 接口名 变量名=new 接 ...
- Spring中IOC与DI的的区别
依赖注入的前提: 有IOC的环境,也就是将必须对象的创建权交给了Spring. DI 介绍 Dependency Injection 依赖注入.需要有IOC 的环境,Spring 创建这个类的过程中, ...
- spring核心技术IOC,DI
在介绍Spring中IOC之前,先说说Spring的优势有哪些.首先1.方便解耦,简化开发:就是说将对象间的依赖关系交给Spring进行控制,避免了编码造成的过度耦合.2.AOP编程的支持:方便进行切 ...
随机推荐
- [GC]一个简单的Garbage Collector的实现
前言: 最近看了google的工程师写的一个非常简单的垃圾收集器,大概200多行C代码,感叹大牛总能够把复杂的东西通过很简单的语言和代码表达出来.为了增加自己的理解,决定把大牛的想法和代码分析一遍,与 ...
- East Central North America Region 2015
E 每过一秒,当前点会把它的值传递给所有相邻点,问t时刻该图的值 #include <iostream> #include <cstdio> #include <algo ...
- PetShop学习第四天
ASP.NET缓存 1.页输出缓存分为整页缓存和部分页缓存.我们可以通过@OutputCache指令来完成对Web页面的输出缓存.
- 【Hadoop代码笔记】Hadoop作业提交之TaskTracker获取Task
一.概要描述 在上上一篇博文和上一篇博文中分别描述了jobTracker和其服务(功能)模块初始化完成后,接收JobClient提交的作业,并进行初始化.本文着重描述,JobTracker如何选择作业 ...
- Android权威编程指南读书笔记(1-2章)
第一章 Android应用初体验 1.4用户界面设计 <?xml version="1.0" encoding="utf-8"?> ADT21开发版 ...
- Java快捷键
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当 ...
- 楔子(xiē zǐ)
戏曲.小说的引子.一般放在篇首,用以点明.补充正文,或者说引出正文或是为正文做铺垫.指旧小说的引子,通常放在小说故事开始之前,起引出或补充正文的作用.这不过是个楔子,下面还有正文.——<儒林外史 ...
- C#程序实现动态调用DLL的研究
摘 要:在<csdn开发高手>2004年第03期中的<化功大法——将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...
- java线程知识点
1. 进程与线程 一个进程拥有多个线程,多个线程共享进程的内存块.操作系统不分配新的内存,因此线程之间通信很容易.不同的进程因处于不同的内存块,因此进程之间通信较为困难. 进程:每个进程都有独立的代码 ...
- WinForm开发中针对TreeView控件改变当前选择节点的字体与颜色
本文转载:http://www.cnblogs.com/umplatform/archive/2012/08/29/2660240.html 在B/S开发中,对TreeView控件要改变当前选中节点的 ...