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




本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/4090988.html,如需转载请自行联系原作者

相关文章
|
12天前
|
XML 缓存 Java
搞透 IOC、Spring IOC ,看这篇就够了!
本文详细解析了Spring框架的核心内容——IOC(控制反转)及其依赖注入(DI)的实现原理,帮助读者理解如何通过IOC实现组件解耦,提高程序的灵活性和可维护性。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
4天前
|
安全 Java 测试技术
Java开发必读,谈谈对Spring IOC与AOP的理解
Spring的IOC和AOP机制通过依赖注入和横切关注点的分离,大大提高了代码的模块化和可维护性。IOC使得对象的创建和管理变得灵活可控,降低了对象之间的耦合度;AOP则通过动态代理机制实现了横切关注点的集中管理,减少了重复代码。理解和掌握这两个核心概念,是高效使用Spring框架的关键。希望本文对你深入理解Spring的IOC和AOP有所帮助。
8 0
|
2月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
200 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
|
2月前
|
XML Java 测试技术
spring复习01,IOC的思想和第一个spring程序helloWorld
Spring框架中IOC(控制反转)的思想和实现,通过一个简单的例子展示了如何通过IOC容器管理对象依赖,从而提高代码的灵活性和可维护性。
spring复习01,IOC的思想和第一个spring程序helloWorld
|
1月前
|
Java Spring 容器
Spring IOC、AOP与事务管理底层原理及源码解析
【10月更文挑战第1天】Spring框架以其强大的控制反转(IOC)和面向切面编程(AOP)功能,成为Java企业级开发中的首选框架。本文将深入探讨Spring IOC和AOP的底层原理,并通过源码解析来揭示其实现机制。同时,我们还将探讨Spring事务管理的核心原理,并给出相应的源码示例。
120 9
|
1月前
|
存储 Java 程序员
SpringIOC和DI的代码实现,Spring如何存取对象?@Controller、@Service、@Repository、@Component、@Configuration、@Bean DI详解
本文详细讲解了Spring框架中IOC容器如何存储和取出Bean对象,包括五大类注解(@Controller、@Service、@Repository、@Component、@Configuration)和方法注解@Bean的用法,以及DI(依赖注入)的三种注入方式:属性注入、构造方法注入和Setter注入,并分析了它们的优缺点。
22 0
SpringIOC和DI的代码实现,Spring如何存取对象?@Controller、@Service、@Repository、@Component、@Configuration、@Bean DI详解
|
1月前
|
存储 开发框架 Java
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
文章详细介绍了Spring、IOC、DI的概念和关系,解释了控制反转(IOC)和依赖注入(DI)的原理,并提供了IOC的代码示例,阐述了Spring框架作为IOC容器的应用。
26 0
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
|
2月前
|
缓存 Java Spring
手写Spring Ioc 循环依赖底层源码剖析
在Spring框架中,IoC(控制反转)是一个核心特性,它通过依赖注入(DI)实现了对象间的解耦。然而,在实际开发中,循环依赖是一个常见的问题。
40 4
|
24天前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
61 0
|
2月前
|
XML Java 开发者
经典面试---spring IOC容器的核心实现原理
作为一名拥有十年研发经验的工程师,对Spring框架尤其是其IOC(Inversion of Control,控制反转)容器的核心实现原理有着深入的理解。
108 3
下一篇
无影云桌面