`
xm_king
  • 浏览: 392747 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
Group-logo
Spring技术内幕读书笔...
浏览量:15383
社区版块
存档分类
最新评论

Spring IOC 基础

阅读更多

近年来,在 JAVA 社区中风起轻量级框架的热潮,“让 J2EE 开发变得简单”,几乎每个月就会有新的轻量级容器出现,这些轻量级容器能够较好地帮助开发者快速地将不同的组件组成一个应用程序,在这些轻量级容器的背后都有一个共同的装配模式,那就是“反向控制”,也就是 IOC ,英文全称是“ Inversion of Control ”。

Spring 的核心是个轻量级 (LightWeight) 的容器 (Container) ,它是实现 IOC(Inversion of Control) 容器和非侵入性 (No intrusive) 的框架, Spring 最重要的核心概念是 IOC ,在 Spring 中,“依赖关系的转移”、“依赖于抽象而非实践”是重要的观念,从对象的角度来看,可以避免对象之间的耦合;从容器的角度来看,可以避免应用程序因依赖于容器的功能,而从容器脱离。

Spring 另一个重要核心概念为 Dependency Injection ,中文常翻译为“依赖注入”,简称 DI 。使用 Spring ,不必自己在程序代码中维护对象的依赖关系,只需在配置文件中加以设置, Spring 容器会自动根据配置,将依赖注入指定的对象。

控制反转

Spring 的核心概念是 IOC IOC 的抽象概念是“依赖关系的转移”。转移是相对于过去不良的应用程序设计来说的,像“高层模块不应该依赖于底层模块,而模块都必须依赖于抽象”是 IOC 的一种表现,“实现必须依赖抽象,而不是抽象依赖于实现”是 IOC 的另一种表现,“应用程序不应该依赖于容器,而是容器服务于应用程序”也是 IOC 容器的一种表现。

IOC Control 是控制的意思,其实背后的意义也是一种依赖关系的转移。如果 A 依赖于 B ,其意义即 B 拥有控制权。如果转移这种关系 ( 依赖关系的反转即控制关系的反转 ) ,将控制权由实现的一方转移到抽象的一方,让抽象方拥有控制权,可以获得组件的可重用性。 IOC 在容器中扮演的角色,可以用好莱坞的一句名言来表示:“ Don’t call me I’ll call you ”。以程序的术语来说,就是“不要向容器要求所需要的 ( 对象 ) 资源,容器会自动将这些对象给你”。

IOC 的要求是容器不应该 ( 或尽量不要 ) 侵入应用程序,也就是不应该出现与容器相依的 API 。应用程序本身可以依赖于抽象的接口,容器可以通过这些抽象接口将所需的资源注入至应用程序中。应用程序不向容器主动要求资源,故而不会依赖于容器特定的 API ,应用程序本身不会意识到正被容器使用,故而可以随时从容器系统中脱离,转移至其他的容器或框架而不需要作任何的修改。

依赖注入

依赖注入的意义是:“保留抽象接口,让组件 (Component) 依赖于抽象接口,当组件要与其他实际的对象发生依赖关系时,由抽象接口来注入依赖的实际对象。”

依赖注入通常有三种方式: Interface injection Setter injection Constructor injection

接口注入 (Interface injection)

因为接口注入需要特定的接口,这样使程序具备侵入性,所以 Spring 抛弃了这种注入方式。

设值注入 (Setter injection)

set 注入就是在程序中给每个变量都增加一个 set 方法,用来设置该属性的值。

构造子注入 (Constuctor injection)

构造子注入就是在需要注入的类中定义一个构造方法,应在构造方法中定义需要注入的实例元素,通过类的构造器来完成协助该类工作的其他实例的初始化。

Spring 的核心是个 IOC 容器,可以管理对象的生命周期,并可以通过 Setter 或构造函数的方式,编写配置文件 ( 一个 XML 文件或是通过注解 ) ,让 Spring 在执行时期根据配置文件的设定,建立对象之间的依赖关系。这不仅减少了大量的程序编写,降低了对象之间的耦合程度,通过 Spring 这类成熟的框架,还可以大幅提升应用程序的可靠性。

分享到:
评论

相关推荐

    Spring IOC基础jar包

    Spring IOC基础jar包

    T22.3_Spring IoC 基础 java 经典教程 经典教材

    T22.3_Spring IoC 基础 java 经典教程 经典教材

    Spring IOC和Spring AOP_spring aop_springIOC

    spring基础Spring IOC和Spring AOP的原理及使用

    第一个spring IOC例子(非maven)

    第一个spring IOC例子(非maven) 方法步骤: 1、下载spring包,提取core,bean,context,expression 四大基础jar http://repo.spring.io/release/org/springframework/spring/ 2、下载common-logging jar ...

    spring ioc aop基础理论实践笔记

    1,spring是一个开源的免费的框架(容器)。 2,spring是一个轻量级的,非入侵式的框架。 ​ 非入侵式:就是项目引入了这个框架之后,...总结:spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。

    springIOC和DI

    什么是spring,spring核心,spring优点,spring体系结构, 入门案例,DI基础,核心API,文档内附代码

    深入解析Spring IoC源码:核心机制与实践应用

    本文深入探讨了Spring框架中IoC容器的源码机制,涵盖了容器的初始化、Bean工厂的实例化、Bean定义的读取及Spring ...适合拥有一定Spring框架基础的开发者阅读,特别是那些希望深入理解框架内部工作原理的高级开发人员。

    《Spring IOC核心技术》- 冰河原创电子书

    这是一本专注讲解Spring IOC最核心的知识的电子书,从简单的使用案例到深度解析源码,只讲Spring IOC最核心的知识,让你知其然,更知其所以然。涵盖:AnnotationConfigApplicationContext、组件添加、组件赋值、组件...

    Spring IoC中的基础知识

    Spring的定义:是一个IoC容器  分为: spring core  spring beans: 组件工厂BeanFactory  spring context: 环境,装配  spring expression 3.Spring 组件的作用域 单例(默认):全局唯一 原型:每次获得...

    spring基础

    Spring基础概念,简单的描述javaSpring框架概述,SpringAOP,Spring IOC

    spring ioc aop

    spring 基础技术,ioc,aop,依赖注入

    Spring基础面试

    1 Spring IoC上下文是哪个接口?(ApplicationContext) 2 Spring IoC有什么作用?(把依赖放到配置文件中,在依赖发生变量时可以通过配置来修改) 3 ApplicationContext在什么时候创建的bean对象,是在创建IOC容器...

    Spring IOC AOP

    三种注入类型。IOC/AOP方面的知识。如基础bean的配置,Annotation。挺详细的.

    Spring 3.0就这么简单源代码

    《Spring3.0就这么简单》主要介绍了Spring3.0的核心内容,不仅讲解了Spring3.0的基础知识,还深入讨论了SpringIoC容器、SpringAOP、使用SpringJDBC访问数据库、集成Hibernate、Spring的事务管理、SpringMVC、单元...

    IoC原理的最基础实现

    此项目是对spring ioc原理的简单实践,主要是对xml配置的解析完成依赖注入;此项目依赖于 Dom4j 、common-beanutils、common-logging、jaxen的jar包。希望可以帮助大家更轻易的理解spring ioc部分原理

    达内java培训目录

    Spring技术 Spring Ioc基础、Ioc注入技巧、对象高级装配(自动装配、模板装配、组件扫描特性、FactoryBean、对象生命周期)、Spring AOP原理、AspectJ、Spring JDBC支持、Spring事务及安全管理;Spring整合Hibernate...

    Spring中IoC的入门实例

    该文档时公司内部文档,用作实习生前期培训用的,比较基础,现发到网上与大家共享...

    编程语言+JAVAspring+IoC容器+依赖注入

    编程语言+JAVAspring+IoC容器+依赖注入**:这是一个关于JAVAspring编程语言的IoC容器的依赖注入的资源,适合有一定JAVAspring基础的开发者。它介绍了JAVAspring的IoC容器的概念、原理和作用,以及如何使用JAVAspring...

    Java - Spring-IoC(Inverse of Control)–> 控制反转

    Spring是一个轻量级Java开发框架(最早由Rod Johnson创建),为Java应用程序提供全面的基础架构支持。 Spring最根本的使命是解决企业级应用开发的复杂性,简化Java开发。 2. Spring两个核心特性 ① IoC(Inverse of ...

    Spring攻略PDF版

     3.1 在Spring IoC容器里配置Bean   3.1.1 问题描述   3.1.2 解决方案   3.1.3 实现方法   3.2 实例化Spring IoC容器   3.2.1 问题描述   3.2.2 解决方案   3.2.3 实现方法   3.3...

Global site tag (gtag.js) - Google Analytics