原始调用模型

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的更多相关文章

  1. spring的IOC,DI及案例详解

    一:spring的基本特征 Spring是一个非常活跃的开源框架:它是一个基于Core来架构多层JavaEE系统的框架,它的主要目的是简化企业开发.Spring以一种非侵入式的方式来管理你的代码,Sp ...

  2. 对Spring中IOC和DI的理解

    前几篇讲了Spring中IOC和DI的用法,本篇应该放到三篇之前,但一直没有想到好的讲解方式,后参考https://blog.csdn.net/luoyepiaoxue2014/article/det ...

  3. 转载百度百科上的强回复,关于spring的IOC和DI

    IoC与DI   首先想说说IoC(Inversion of Control,控制倒转).这是spring的核心,贯穿始终.所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命 ...

  4. Java 反射和内省实现spring的IOC和DI

    1.构造两个JavaBean package com.spring.model; public class People { private Car car; public Car getCar() ...

  5. 总结一下 Spring的IOC、DI

    国庆节刚过,应一些朋友的提问,总结一下Spring中IOC也即DI的通俗理解. 网友wm5920解释: IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件 ...

  6. Spring:Ioc和DI

    一.摘要         本文为作者搜集的Spring关于IoC/DI相关知识的记录整理笔记.介绍了IoC(控制反转)是一种设计原则,用于降低代码的耦合度.介绍了IoC是通过BeanDefinitio ...

  7. spring之IOC和DI实现

    Spring核心思想 : IOC控制反转 DI依赖注入 AOP切面编程 IOC思想: 场景描述: 在没有加入spring框架之前我们调取业务层时需要创建对象,例如:  接口名   变量名=new  接 ...

  8. Spring中IOC与DI的的区别

    依赖注入的前提: 有IOC的环境,也就是将必须对象的创建权交给了Spring. DI 介绍 Dependency Injection 依赖注入.需要有IOC 的环境,Spring 创建这个类的过程中, ...

  9. spring核心技术IOC,DI

    在介绍Spring中IOC之前,先说说Spring的优势有哪些.首先1.方便解耦,简化开发:就是说将对象间的依赖关系交给Spring进行控制,避免了编码造成的过度耦合.2.AOP编程的支持:方便进行切 ...

随机推荐

  1. 《Nagios系统监控实践》一书出版

    本书是我的第一本译著,有此机会实属机缘巧合.虽然使用Nagios只有一年多的时间,但是作为用户,我深感其设计的简洁与高效—没有一丝多余的东西.因为工作的关系,要求对各个领域都有所了解,所以没有仔细地阅 ...

  2. Windows版词汇小助手V3.0发布了

    欢迎使用词汇小助手 作者:IT小小龙 电子邮箱:long_python@126.com 个人博客:http://blog.sina.com.cn/buduanqs 一款跨平台词汇查询记忆学习软件. 已 ...

  3. 【译】 AWK教程指南 8处理多行数据

    awk 每次从数据文件中只读取一行数据进行处理.awk是依照其内置变量 RS(Record Separator) 的定义将文件中的数据分隔成一行一行的Record.RS 的默认值是 "\n& ...

  4. Python:itertools模块

    itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生成器和生成器表达式)的函数联合使用. ch ...

  5. uva 11178

    题意:根据A,B,C三点的位置确定D,E,F三个点的位置. 贴模板 #include<cstdio> #include<cmath> #include<cstring&g ...

  6. HDU-4665 Unshuffle 搜索 | 2-SAT

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4665 本题的2-SAT建图颇为复杂,有时间再来填坑(自己写的一直挂着,标程建图太复杂了)...然后用暴 ...

  7. jqgrid在页面出来竖型滚动条自动调整列宽

    在项目中使用jqgrid的时候,需要设置在页面竖型滚动条出来的时候,列宽进行调整 1. 判断jqgrid的宽度是否和页面的宽度不一致(判断滚动条是否出来) 2. 调整jqgrid的列宽,因为jqgri ...

  8. stm32f10x.h文件分析理解

    今天再看过半年前自己写的这篇发现自己当时理解有误,stm32f10x.h与库开发并未存在太大关系,只是一个最为重要的寄存器地址到寄存器结构体变量的映射. stm32f10x.h 这个头文件是STM32 ...

  9. .NET MVC4 ApiController拦截器的使用

    目前在公司新开发了一个项目,第一次正式使用.NET MVC4来搭建,用拦截器来处理权限验证. 自定义拦截器需继承ActionFilterAttribute类,重写OnActionExecuting和O ...

  10. VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...