反向控制是spring框架的核心。但是反向控制是什么意思?到底控制的什么方面被反向了?
获得依赖对象的方式反向了。反向控制的一个更贴切的名字是:依赖注入
通常我们写的程序,都是需要告诉容器或者框架,让它们找到自身所需要的类,然后再由应用代码创建待使用的对象实例。
因此,应用代码在使用实例之前,需要创建对象实例。
然而,在ioc模式中,创建对象实例的任务交给ioc容器或者框架,使得应用代码只需要直接使用实例,这就是ioc。
相对于ioc而言,依赖注入的确更加准确的描述了这种设计理念。所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。
下面来看看ioc在spring中的实现:
任何重要的系统都需要至少两个相互合作的类来完成业务逻辑。通常,每个对象都要自己负责得到它的合作(依赖)对象。你会发现,这样会导致代码耦合度高而且难于测试。使用ioc,对象的依赖都是在对象创建时由负责协调系统中各个对象的外部实体提供的,这样使软件组件松散连接成为可能。
下面示意了spring ioc应用,步骤如下:
定义Action接口,并为其定义一个excute方法,以完成目标逻辑。根据 programming to an interface, not an implementation的原则,这里首先将业务对象抽象成接口,正是为了实施这个原则。
类UpperAction实现action接口,在此类中,定义一个String型的域message,并提供相应的setter和getter方法,实现的excute方法如下:
public String excute(String str){
return (getMessage()+str).toUpperCase();
}
编写spring配置文件(bean.xml):
<beans>
<bean id="TheAction" class="net.chen.spring.qs.UpperAction">
<property name="message"><value>Hello</value></property>
</bean>
</beans>
测试代码:
public void testQuickStart(){
ApplicationContext ctx = new FileSystemApplicationContext("bean.xml");
Action a = (Action)ctx.getBean("TheAction");
System.out.println(a.excute("Rod Johnson"));
}
上面的测试代码中,我们根据bean.xml创建了一个ApplicationContext实例,并从此实例中获取我们所需要的Action实现,运行测试代码,我们看到控制台输出:
HELLO ROD JOSNSON
针对以上实例的分析:
1、我们自己编写的组件并不需要实现框架指定的接口(这里指的框架是spring框架),因此可以轻松的将组件从spring中脱离,甚至不需要任何修改。
2、组件间的依赖关系减少,极大的改善了代码的可重用性。spring的依赖注入机制,可以在运行期为组件配置所需资源,而无需在编写组件代码时就加以指定,从而在相当程度上降低了组件之间的耦合。
总结:从以上代码可以看到,借助于接口将具体对象注入容器,然后利用spring的代码可以轻易的取得所需要的具体对象。
以前写程序,都是自己手工需要某个对象然后声明其实例,现在对象的获得是通过sping来控制,从spring的ioc容器中取得所需要的具体对象。
分享到:
相关推荐
Spring 框架是Java开发中的核心框架,它主要由两个关键部分组成:IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming...了解和掌握这两个核心概念,对于高效地使用Spring框架进行开发至关重要。
下面将详细介绍Spring IOC的基本概念、工作原理以及相关知识点。 **1. Spring IOC基本概念** - **控制反转(IOC)**:传统程序设计中,对象的创建和依赖关系由代码直接控制。而在Spring IOC中,这种控制权被反转,...
在本文中,我们将深入探讨 Spring IOC 的概念、工作原理以及如何在实际项目中应用。 首先,理解 IOC 的概念至关重要。IOC 是一种设计模式,它将对象的创建和管理权反转,由框架负责管理对象的生命周期,而不是由...
Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它极大地简化了Java应用的开发,通过将对象的创建...通过学习和理解这个项目,你可以深入掌握Spring IOC的核心原理,并将其应用到自己的项目中。
Java反射和Spring IOC是Java开发中的两个重要概念,它们在构建灵活、可扩展的应用程序时起着关键作用。本文将深入探讨这两个主题,并提供相关的学习资源。 首先,让我们了解一下Java反射。Java反射机制是Java语言的...
文档可能将深入探讨Spring IoC容器初始化、Bean生命周期管理、依赖注入等关键概念,并以2021年的开源版本为背景进行分析。 从提供的部分文档内容来看,我们可以提炼出以下几个知识点: 1. **BeanFactory与...
Spring IOC,全称为Inversion of Control,即控制反转,是Spring框架的核心特性之一。它将对象的创建和管理从应用程序代码中分离出来,...通过阅读提供的"Spring_IOC_.pdf"文档,你可以深入学习和掌握这些概念和技术。
在Spring框架中,依赖注入(Inversion of Control, IoC)和面向切面编程(Aspect Oriented Programming, AOP)是两大核心特性。本篇将深入探讨如何通过注解...理解并实践这些概念,对于掌握Spring框架的精髓至关重要。
首先,我们需要理解IOC的概念。IOC是控制反转,它的核心思想是将对象的创建和管理权交给容器,而不是由对象自身负责。这样可以降低对象之间的耦合度,提高代码的可测试性和可维护性。 在实现手写Spring IOC的过程中...
在这个实验中,我们将深入理解并实践Spring IoC的核心概念。 IoC是Spring的核心特性,它帮助开发者摆脱了对对象创建和管理的直接控制,转而由框架来负责。通过这种方式,我们可以更专注于业务逻辑,而不是对象的...
1. **配置文件解析**:在`springIOC_0602`项目中,我们有一个XML配置文件,它定义了bean的声明和它们的依赖。JDOM库被用来读取这个文件,解析bean的定义,包括bean的类名、属性、依赖等。 2. **Bean的创建**:解析...
本文将通过分析并实现一个简化版的Spring IOC+MVC框架,帮助读者深入理解这两个核心概念以及Spring的工作原理。 一、Spring IOC(Inversion of Control)——控制反转 控制反转,简称IOC,是Spring框架的核心特性...
同时,掌握如何利用ApplicationContext获取Bean,以及如何利用AOP和生命周期管理功能,将帮助你更好地运用Spring框架解决实际问题。在这个过程中,"Spring-ioc-jar"中的类和接口是实现这些功能的基础,深入研究其...
### Spring IoC与事务管理架构解析 #### 一、Spring IoC容器的构建与工作原理 **Spring**作为一款轻量级的Java开发框架,在Java企业级应用...同时,对Spring事务管理机制的掌握也有助于设计出更加健壮的企业级应用。
在IT行业中,Spring框架是...总的来说,掌握Spring的IoC和DI是成为一名熟练的Java开发者必备的技能。理解并应用这些概念可以显著提高代码的可测试性、可维护性和可扩展性,这也是为什么Spring框架如此流行的原因之一。
例如,`SpringIOC`目录中的配置文件(如`applicationContext.xml`)用于定义bean的定义和它们之间的依赖关系。通过XML或注解方式声明bean,Spring可以自动管理bean的实例化、初始化和销毁,从而简化了代码并提高了可...
Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它将对象的创建和管理权交由Spring容器处理,使得开发者...掌握这些内容,将有助于你更好地理解和使用Spring框架,提升软件开发的效率和质量。
在这个名为"spring_IOC实现(墨者革离)"的项目中,我们可以通过模拟城门叩问的编剧场景来理解这一概念。 首先,控制反转的基本思想是将对象的创建和依赖关系的管理从应用程序中分离出来,交给一个外部容器(在...
2. **依赖注入**:Spring IOC的一个关键概念是依赖注入(Dependency Injection,DI)。它允许容器在运行时向对象提供其依赖项,而不是由对象自己去查找或创建。这样可以提高代码的可测试性、可维护性和松耦合性。 3...
Spring框架是Java开发中最常用的轻量级框架之一,它的核心特性包括依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-...通过学习和熟练掌握这两个核心概念,能够更好地利用Spring框架进行高效开发。