Spring核心之IOC

IOC是Spring的两大核心之一:IOC的核心就是解耦。

  举个例子:有2个班级可以上课,校长指定老师去上课,代码如下

  

package com.hongcong.test;

public class Class1 {
    public void teach(){
        System.out.println("一班在上课");
    }
}
package com.hongcong.test;

public class Class2  {
    public void teach(){
        System.out.println("二班在上课");
    }
}

teacher

package com.hongcong.test;

public class teacher {

    public void doTeach(){
        Class1 class1 = new Class1();
        class1.teach();

    }
}

校长

package com.hongcong.service;

import com.hongcong.test.Class1;
import com.hongcong.test.Class2;
import com.hongcong.test.teacher;

public class Principal {
    public static void main(String[] args) {
        teacher teacher = new teacher();
        teacher.doTeach();

    }
}

这时候去执行校长时,一班就开始上课了。但是如果校长想要老师去二班上课的话,要么修改老师中的方法;要么新增老师的方法且修改校长中的方法。可以看出,此时的代码耦合在了一起。这时候可以借助IOC的思想去重新设计这个程序,代码如下:

定义一个上课的接口,然后班级一和班级二都去实现这个接口:

package com.hongcong.test;

public interface TeachInterface {
    public void teach();
}
package com.hongcong.test;

public class Class1 implements TeachInterface{
    public void teach(){
        System.out.println("一班在上课");
    }
}
package com.hongcong.test;

public class Class2 implements TeachInterface{
    public void teach(){
        System.out.println("二班在上课");
    }
}
package com.hongcong.test;

public class teacher {
     private TeachInterface teachInterface;

    public void setTeachInterface(TeachInterface teachInterface) {
        this.teachInterface = teachInterface;
    } 

    public void doTeach(){

        teachInterface.teach();
    }
}
package com.hongcong.service;

import com.hongcong.test.Class1;
import com.hongcong.test.Class2;
import com.hongcong.test.teacher;

public class Principal {
    public static void main(String[] args) {

        teacher teacher = new teacher();
        teacher.setTeachInterface(new Class2());
        teacher.doTeach();
    }
}

此时校长如果想让老师去一班上课,只需要修改teacher.setTeachInterface(new Class2());方法中的参数就可以了。老师已经和去哪个班级上课完全没有关系了,只要校长下个指令就行。

时间: 2024-07-28 14:28:55

Spring核心之IOC的相关文章

SPRING源码解析-SPRING 核心-IOC

IoC 和 AOP是Spring的核心, 是Spring系统中其他组件模块和应用开发的基础.透过这两个模块的设计和实现可以了解Spring倡导的对企业应用开发所应秉承的思路: 易用性. POJO开发企业应用, 直接依赖于Java语言,而不是容器和框架. 提升程序的可测试性,提高软件质量. 提供一致性编程模型,面向接口的编程 降低应用的负载和框架的侵入性.IoC和AOP实现. 不作为现有解决方案的替代,而是集成现有. IoC和AOP这两个核心组件,特别是IoC容器,使用户在使用Spring完成PO

Spring核心之IOC&反射

IOC思想:Spring容器来实现相互依赖对象的创建,协调工作.对象只需要关心业务逻辑本身就好了.从这方面来说,对象如何得到他的协作对象的责任被反转了(IOC.DI).控制反转就是获得依赖对象的方式反转了.由Spring来负责控制对象的生命周期和对象间的关系. IOC(控制反转)之中的核心是在系统运行中,动态的向某个对象提供它所需要的其他对象.这一点是通过DI(Dependency Injection,依赖注入)来实现的. 那么DI是如何实现的呢? Java 1.3之后一个重要特征是反射(ref

Spring核心之Ioc容器走读笔记

其实说到Spring的核心,无非指的就是Ioc容器和AOP. Spring降低了应用的负载和框架的侵入性,依靠的解决方案正是Ioc和AOP的支持. 学习Spring的Ioc和Aop的设计模式可以帮助我们在自己编写代码的时候如何优雅的设计和实现. 这里就只记录一下自己对Ioc容器设计和实现的走读和思考. 在查看Spring Ioc容器的设计文档和源代码后,发现其实只有2类主要的容器: 一类是实现BeanFactory接口,这类的容器只实现了基本的方法,从名字上就大概能知道是什么功能:一类是实现Ap

Spring核心之IoC——依赖注入

在J2EE开发平台中,Spring是一种优秀的轻量级企业应用解决方案.Spring倡导一切从实际出发,它的核心技术就是IOC(控制反转)和AOP(面向切面编程)技术.本文用的Spring版本为spring-framework-2.5.6(通过Myeclipse导入),不同版本的jar包可能会存在不同的区别. Spring内置了日志组件log4j.jar,所以在正式使用Spring之前需要对log4j进行简单的配置,在项目的src根目录下创建log4j.properties属性文件.具体代码如下:

Spring核心(ioc控制反转)

 IoC,Inversion Of Control 即控制反转,由容器来管理业务对象之间的依赖关系,而非传统方式中的由代码来管理. 其本质,即将控制权由应用程序代码转到了外部容器,控制权的转移就是所谓的反转,其带来的最大的好处是降低了业务对象之间的依赖程度,即实现了解耦. Spring的IoC容器主要使用DI(Dependency Injection,依赖注入)方式实现的.不需要主动查找,对象的查找.定位和创建全部由容器管理,容器会将符合依赖关系的对象通过属性(setter等)或者构造函数传

Spring 核心容器 IOC

目录 1. BeanFactory 2. BeanDefinition 3.BeanDefinitionReader 4 . Web IOC 容器初体验 一 .BeanFactory Spring Bean 的创建是典型的工厂模式,这一系列的 Bean 工厂,也即 IOC 容器为开发者管理对象间的依赖关系提供了很多便利和基础服务.最基本的 IOC 容器接口 BeanFactory,来看一下它的源码: public interface BeanFactory { //对 FactoryBean 的

2019.12.02——Spring学习(ioc)

Spring概念 1. Spring是开源的轻量级框架: 2. Spring核心:IOC(控制反转).AOP(面向切面编程): 3. Spring是一站式框架:Spring在javaee三层结构中,每层都提供不同的解决技术: - web层:springMVC - service层:IOC - dao层:JDBCTemplate Spring的IOC操作 1. 对象创建交给Spring进行管理: 2. IOC操作的两种方式:配置文件.注解. IOC底层原理 原文链接:Spring IOC的原理及详

Spring核心思想之IOC总结

说到Spring的核心思想Ioc和aop不是Spring提出来的,在Spring之前就已经存在,只不过更偏向理论化,Spring在技术层次把两个思想做了非常好的实现(java) 第一部分:什么是IOCIOC Inversion of Control (控制反转/反转控制),注意它是?个技术思想,不是?个技术实现描述的事情:Java开发领域对象的创建,管理的问题传统开发?式:?如类A依赖于类B,往往会在类A中new?个B的对象 IoC思想下开发?式:我们不???去new对象了,?是由IoC容器(S

Spring入门和IOC

本节要点: Spring简介 Spring特点 Spring框架组成 IOC和DI概念 项目中如何引入Spring框架 1 spring简介  spring:春天,寓意给软件行业带来了春天,由Rod Johnson提出 提出目的:解决企业应用开发的复杂性. 作用范围:任何Java应用 . 提出理念:使现有的技术更加实用,不去重复造轮子,让现有的框架运用更加合理.Struts和hibernate没有任何联系,所有spring最初的目的就是联系struts和hibernate,让他们运用的更好,本身