博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Spring的IOC和DI
阅读量:6441 次
发布时间:2019-06-23

本文共 2336 字,大约阅读时间需要 7 分钟。

原始调用模型

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:应用程序立场

 

转载于:https://www.cnblogs.com/DreamDrive/p/4090988.html

你可能感兴趣的文章
Server Hard drive mode
查看>>
smb服务器配置过程遇到错误及解决
查看>>
java杂乱
查看>>
在Linux上安装Python3.6.1
查看>>
[基础]iOS 可视化编程(全系列)
查看>>
我的友情链接
查看>>
LVS之NAT模型配置实验
查看>>
nginx 报错 99: Cannot assign requested address
查看>>
几种流行的AJAX框架:jQuery,Mootools,Dojo,Ext JS的对比
查看>>
Socket-Client通信
查看>>
Maven搭建简单的SS项目
查看>>
#我要上首页# 新版博客首页来了,做明星博主还会远吗?
查看>>
PHP缓存技术
查看>>
关于SOCKET资源堆栈
查看>>
笔记 百度搜索
查看>>
控制台 - 网络管理之华为交换机 S系列端口限速
查看>>
我的友情链接
查看>>
linux为启动菜单加密码
查看>>
MySQL5.5编译方式安装实战
查看>>
细谈Ehcache页面缓存的使用
查看>>