IOC(Inversion of Control) ,所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。
如下面的程序:
public class PersonServiceBean { private PersonDAO personDAO = new PersonDAOBean(); public void save() { personDAO.add(); } }
PersonDaoBean 是在应用内部(即PersonServiceBean类)创建及维护的。
当我们把依赖对象交给外部容器负责创建,那么PersonServiceBean 类可以改成如下:
package org.spring.service.impl; import org.spring.dao.PersonDAO; import org.spring.service.PersonService; public class PersonServiceBean implements PersonService { //实现接口编程,PersonServiceBean不负责依赖对象的创建及维护, //依赖对象的创建及维护是由外部容器(这里指的是spring容器)负责的 private PersonDAO personDAO; public PersonDAO getPersonDAO() { return personDAO; } public void setPersonDAO(PersonDAO personDAO) { this.personDAO = personDAO; } public void save() { personDAO.add(); } }
PersonService接口:
package org.spring.service; public interface PersonService { public void save(); }
PersonDAO接口:
package org.spring.dao; public interface PersonDAO { public void add(); }
PersonDAOBean实现类:
package org.spring.dao.impl; import org.spring.dao.PersonDAO; public class PersonDAOBean implements PersonDAO { public void add() { System.out.println("执行PersonDAOBean中的增加方法!"); } }
当然为了能让容器能管理我们的bean,我们还需要在spring中做如下配置:
<?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-2.5.xsd"> <bean id="personDAOBean" class="org.spring.dao.impl.PersonDAOBean" /> <bean id="personServiceBean" class="org.spring.service.impl.PersonServiceBean"> <property name="personDAO" ref="personDAOBean" /> </bean> </beans>
Spring容器在启动后,就会对配置文件中的所有bean进行初始化,并且把id为personDAO的bean注入到id为personServiceBean的bean中,这样personServiceBean就不用负责对personDAObean的创建及维护了,这项工作在容器初始化时就已经完成了,配置文件中的property中的name属性指的是id为personServiceBean的bean中有一个setPersonDAO方法。
测试类:
package org.spring; import org.junit.Test; import org.spring.service.PersonService; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringTest { @Test public void test() { ApplicationContext ctx = new ClassPathXmlApplicationContext( "spring.xml"); PersonService personService = (PersonService) ctx .getBean("personServiceBean"); personService.save(); } }
控制台打印结果如下:
工程目录结构图:
相关推荐
Spring4 IOC(Inversion of Control,控制...通过这个Spring4 IOC示例源码的学习,不仅可以加深对Spring框架的理解,还能提升在实际项目中的应用能力。在实践中不断探索和掌握,将有助于成为一名更优秀的Java开发者。
Spring IOC,全称Inversion of Control,即“控制反转”,是Spring框架的核心特性之一。在传统的Java应用程序中,对象的创建和管理通常由开发者自己控制。而在Spring IOC中,这种控制权被反转,对象的创建、初始化、...
在这个示例源代码中,我们可以看到多个Java类和一个bean.xml配置文件,这些都是实现Spring IOC的关键组成部分。 首先,让我们了解一下什么是控制反转(IOC)。在传统的程序设计中,对象通常自行创建其依赖项,但在...
学习这个示例,你可以看到如何在实际项目中配置和使用Spring的IOC和AOP,进一步理解它们如何帮助简化代码并提高代码质量。对于初学者来说,这是一个很好的起点,可以帮助他们掌握Spring的核心特性,并应用于实际开发...
在本文中,我们将深入探讨Spring框架的核心特性——控制反转(Inversion of Control,简称IoC)和依赖注入(Dependency Injection,简称DI),以及如何通过注解配置和Maven项目构建来实现这一概念。Spring框架是Java...
在本文中,我们将深入探讨如何使用Spring的Inversion of Control(IoC)容器来实现一个具体的案例:控制打印机(Printer)类与不同类型的纸张(Paper)类的交互。Spring的IoC允许我们解耦组件,使代码更加灵活且易于...
在探讨Spring框架的核心组件之一——IOC(Inversion of Control,控制反转)容器之前,首先需要理解它在Spring框架中的角色与地位。对于Spring的使用者而言,IOC容器不仅是管理Bean(即应用中的对象实例)生命周期的...
Spring框架的核心特性之一是Inversion of Control(IoC),也被称为依赖注入(Dependency Injection)。IoC是一种设计模式,它将对象之间的依赖关系从代码中解耦出来,转交给一个外部容器(在Spring中就是...
Spring IOC AOP学习示例代码,包含Spring常用操作示例和所有所需jar文件。参考博客:http://blog.csdn.net/daijin888888/article/details/51735291
例如,`SpringIOC`目录中的配置文件(如`applicationContext.xml`)用于定义bean的定义和它们之间的依赖关系。通过XML或注解方式声明bean,Spring可以自动管理bean的实例化、初始化和销毁,从而简化了代码并提高了可...
例如,在`Spring-IOC示例.doc`中,可能包含如何配置Bean的详细示例。 3. **依赖注入**:这是Spring IOC的另一个关键概念。Spring通过构造函数注入、setter注入或属性注入来实现对象之间的依赖关系。这种方式使得...
**Spring之IoC入门实例详解** 在Java世界中,Spring框架以其强大的依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IoC)能力而广受赞誉。IoC是一种设计模式,它将对象的创建和...
在Java开发领域,Spring框架无疑是使用最为广泛的轻量级框架之一,其中的核心组件就是IOC(Inversion of Control)容器。本文将深入剖析Spring的IOC容器,理解其工作原理和重要功能,以帮助开发者更好地利用这一强大...
最后,`springTest`这个文件可能是包含了运行Spring AOP和IOC示例的项目。这个项目可能包含了Spring配置文件、Java源代码以及必要的依赖库。为了运行这个示例,你需要设置一个Spring容器,加载配置,然后从容器中...
Spring框架的依赖注入(Dependency Injection, DI)是其核心特性之一,而Spring的IOC(Inversion of Control,控制反转)是DI的一种实现方式。在传统的编程模式中,对象通常负责自己创建所需的依赖项。而在Spring中...
通过这个模拟的Spring IOC示例,你可以学习到如何设置bean的属性,如何处理bean间的依赖关系,以及如何在代码中获取和使用这些bean。对于Spring初学者来说,这是一个很好的起点,可以帮助你更好地理解和掌握Spring的...
在Spring框架中,IoC(Inversion of Control)容器是其核心特性之一,它负责管理对象的生命周期和依赖关系。IoC容器通过控制反转的概念,将对象的创建和依赖关系的配置从应用代码中分离出来,使代码更加灵活、可测试...
在文件名为【ioc01】的压缩包中,可能包含了Spring IOC的基础教程或者示例代码,它可能涵盖了如何创建Bean定义、配置依赖注入、使用不同类型的Bean作用域(如singleton、prototype)、以及如何利用@Autowired注解...
其中,IoC和依赖注入(Dependency Injection, DI)是Spring框架最核心的部分之一。 #### 二、IoC容器概述 在传统的Java应用程序中,对象的创建和管理通常由程序员来完成。这种方式会导致代码之间存在高度耦合,难以...