`

spring 攻略 - 笔记- 第一章 控制反转和容器

阅读更多

 

IOC - 控制反转:是一个设计原则

用来对组件之间的关系进行解耦,Spring提供了一个IOC的实现, Spring Core-IOC容器来管理组件

 

IOC 是一个通用的设计原则,DI(依赖注入)是具体的设计模式,它体现了IOC的设计原则

 

1.问题:OOP将系统分解成了一组可重用的对象,如果没有一个核心模块来管理(创建和管理)这些对象,这些对象就会仅仅的耦合在一起

1.解决方法:创建一个容器来管理,运行于容器里的对象为组件

1. 实现方法:

1.1使用接口

 

1.1.1问题:如果只使用接口,则对象的实现(注入)是硬编码

1.1.1解决方法:采用容器(管理对象即管理负责组成系统的组件)

 

1.1.2问题:如果采用了容器,那么容器负责创建了需要的所有对象(产生了依赖),并且使用类(Service类)需要容器的实例(和容器产生了依赖,并且通过字符串来说明需要具体使用哪个对象,这里是硬编码

--(1.1.2解决方法:配置文件,将依赖从代码中转移到配置文件,容易修改和维护)

 

1.2问题:采用了容器,则还需要代码从容器中查找出自己所需的组件,如果更换了容器,则这些代码就需要改变

1.2解决方法:采用JEE模式--服务定位器(Service Locator),将查找请求委托给服务定位器

1.2.1 实现:Service--调用具体对象的接口,则具体对象的注入流程:通过 ServiceLocator--Container--具体实现

 

IOC和DI的应用

1.3问题:组件依赖其它组件,需要主动执行查找

1.3解决方法:通过 DI 来,如setter实现,容器主动为每一个组件注入必须的资源(对象),组件不需要主动查找,即Don't call us,we'll call you

不同的DI实现

1.4 setter方法,构造器注入

setter方法缺点:

1). 如果组件使用者忘记注入它所需的依赖,则会发生NullPointException,并且这种情况很难调试

2).setter注入存在安全风险,无法保证setter调用后,再次被调用而更改依赖

构造器注入PS:提供构造器之后,java将不提供默认的构造器

 

1.5使用配置文件配置容器

 1.5.1问题:使用java代码来配置依赖关系,效率低

1.5.2解决方法:基于配置文件

1.5.3实现方法:创建配置文件--容器读取并管理组件

 

 

分享到:
评论

相关推荐

    Spring5 框架 ---- IOC容器 ---- 代码

    Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- ...

    spring培训-笔记

    (用户持久化类)重构第一步——面向接口编程 8 重构第二步——工厂(Factory)模式 9 重构第三步——工厂(Factory)模式的改进 10 重构第四步-IoC容器 11 控制反转(IoC)/依赖注入(DI) 11 什么是控制反转...

    spring技术--IOC控制反转课件.ppt

    **Spring技术--IOC控制反转** 在Java开发领域,Spring框架以其...总之,Spring的IOC技术通过控制反转和依赖注入,提高了代码的可维护性和可扩展性,降低了系统复杂性,是现代Java企业级应用开发中不可或缺的一部分。

    黑马程序员-SpringCloud-学习笔记01-认识微服务

    黑马程序员-SpringCloud-学习笔记01-认识微服务

    黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心

    黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心

    Spring.NET学习笔记-控制反转

    通过上述示例,我们可以清晰地看到控制反转和依赖注入的概念及其在Spring.NET中的具体应用。利用Spring.NET框架提供的IoC容器,不仅可以大大降低模块之间的耦合度,还能提高代码的可读性和可维护性。这对于构建复杂...

    Spring自学笔记-Ioc(控制反转)容器

    ### Spring自学笔记-Ioc(控制反转)容器 #### 一、Spring框架简介 Spring框架是一个开源的Java平台,用于构建企业级应用。它提供了一种轻量级的方式来管理应用程序的各种组件和服务,使得开发者能够更容易地构建...

    spring-framework-master

    "spring-framework-master"这一压缩包包含了Spring框架的完整源码,为我们提供了深入理解这一强大工具的绝佳机会。 Spring的核心设计理念是依赖注入(Dependency Injection,简称DI),它通过反转控制(Inversion ...

    spring-cglib-repack-3.2.5.jar,spring-objenesis-repack-2.6.jar

    标题中的"spring-cglib-repack-3.2.5.jar"和"spring-objenesis-repack-2.6.jar"是Spring框架在运行时依赖的两个关键库,它们主要涉及到动态代理和对象创建的优化。 1. **CGLIB(Code Generation Library)**: ...

    spring--day02笔记.doc

    IoC(Inversion of Control,控制反转)容器是Spring框架的核心组件之一,它负责管理应用程序中的对象关系和依赖关系。IoC容器提供了一个_centralized_registry_,用于存储和管理应用程序中的对象。 依赖注入 ...

    spring-framework-1.0-with-dependencies.zip

    2. **spring-context**:扩展了spring-beans,引入了ApplicationContext接口,提供了一种更高级的容器,可以处理国际化、事件传播、资源加载等功能。 3. **spring-aop**:提供了AOP功能,包括定义切入点、通知、...

    黑马程序员-SpringCloud-学习笔记-02-微服务拆分及远程调用

    黑马程序员-SpringCloud-学习笔记-02-微服务拆分及远程调用

    spring-framework-reference-4.3.19.pdf

    - **依赖注入与控制反转**:Spring的核心功能之一是依赖注入(DI),这是一种设计模式,用于实现松耦合的应用程序组件。控制反转(IoC)容器负责管理对象的生命周期和配置,从而实现了依赖注入。 - **框架模块**: ...

    Spring-IOC笔记

    spring-IOC的一些笔记心得

    springframework-4.2.5

    3. **Spring Context**:`spring-context-4.2.5.RELEASE.jar`扩展了Spring Core的功能,提供了一个应用上下文,它是bean的容器,可以管理和查找bean,并且支持消息处理、AOP(Aspect Oriented Programming,面向切面...

    spring导入eclipse时少的spring-cglib-repack-3.2.4.jar和spring-objenesis-repack-2.4.jar

    然而,有时候在导入Spring项目时,可能会遇到一些问题,例如标题中提到的"spring-cglib-repack-3.2.4.jar"和"spring-objenesis-repack-2.4.jar"这两个jar包的缺失。这些jar包对于Spring框架的正常运行至关重要,因为...

    Spring攻略PDF版

     第1章 控制反转和容器   1.1 使用容器管理组件   1.1.1 问题描述   1.1.2 解决方案   1.1.3 实现方法   1.2 使用服务定位器降低查找组件的复杂性   1.2.1 问题描述   1.2.2 解决方案...

    官方原版源码spring-framework-5.1.4.RELEASE.zip

    例如,关于IoC(Inversion of Control,控制反转)的实现,Spring使用了XML配置或注解来定义bean的依赖关系,通过反射机制动态加载和管理bean。另外,AOP模块实现了切面编程,允许我们定义横切关注点,如日志、事务...

    Spring系列-控制反转.md

    Spring系列-控制反转.md

Global site tag (gtag.js) - Google Analytics