近年来,在
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包
T22.3_Spring IoC 基础 java 经典教程 经典教材
spring基础Spring IOC和Spring AOP的原理及使用
第一个spring IOC例子(非maven) 方法步骤: 1、下载spring包,提取core,bean,context,expression 四大基础jar http://repo.spring.io/release/org/springframework/spring/ 2、下载common-logging jar ...
1,spring是一个开源的免费的框架(容器)。 2,spring是一个轻量级的,非入侵式的框架。 非入侵式:就是项目引入了这个框架之后,...总结:spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。
什么是spring,spring核心,spring优点,spring体系结构, 入门案例,DI基础,核心API,文档内附代码
本文深入探讨了Spring框架中IoC容器的源码机制,涵盖了容器的初始化、Bean工厂的实例化、Bean定义的读取及Spring ...适合拥有一定Spring框架基础的开发者阅读,特别是那些希望深入理解框架内部工作原理的高级开发人员。
这是一本专注讲解Spring IOC最核心的知识的电子书,从简单的使用案例到深度解析源码,只讲Spring IOC最核心的知识,让你知其然,更知其所以然。涵盖:AnnotationConfigApplicationContext、组件添加、组件赋值、组件...
Spring的定义:是一个IoC容器 分为: spring core spring beans: 组件工厂BeanFactory spring context: 环境,装配 spring expression 3.Spring 组件的作用域 单例(默认):全局唯一 原型:每次获得...
Spring基础概念,简单的描述javaSpring框架概述,SpringAOP,Spring IOC
spring 基础技术,ioc,aop,依赖注入
1 Spring IoC上下文是哪个接口?(ApplicationContext) 2 Spring IoC有什么作用?(把依赖放到配置文件中,在依赖发生变量时可以通过配置来修改) 3 ApplicationContext在什么时候创建的bean对象,是在创建IOC容器...
三种注入类型。IOC/AOP方面的知识。如基础bean的配置,Annotation。挺详细的.
《Spring3.0就这么简单》主要介绍了Spring3.0的核心内容,不仅讲解了Spring3.0的基础知识,还深入讨论了SpringIoC容器、SpringAOP、使用SpringJDBC访问数据库、集成Hibernate、Spring的事务管理、SpringMVC、单元...
此项目是对spring ioc原理的简单实践,主要是对xml配置的解析完成依赖注入;此项目依赖于 Dom4j 、common-beanutils、common-logging、jaxen的jar包。希望可以帮助大家更轻易的理解spring ioc部分原理
Spring技术 Spring Ioc基础、Ioc注入技巧、对象高级装配(自动装配、模板装配、组件扫描特性、FactoryBean、对象生命周期)、Spring AOP原理、AspectJ、Spring JDBC支持、Spring事务及安全管理;Spring整合Hibernate...
该文档时公司内部文档,用作实习生前期培训用的,比较基础,现发到网上与大家共享...
编程语言+JAVAspring+IoC容器+依赖注入**:这是一个关于JAVAspring编程语言的IoC容器的依赖注入的资源,适合有一定JAVAspring基础的开发者。它介绍了JAVAspring的IoC容器的概念、原理和作用,以及如何使用JAVAspring...
Spring是一个轻量级Java开发框架(最早由Rod Johnson创建),为Java应用程序提供全面的基础架构支持。 Spring最根本的使命是解决企业级应用开发的复杂性,简化Java开发。 2. Spring两个核心特性 ① IoC(Inverse of ...
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...