zoukankan      html  css  js  c++  java
  • Spring IOC 原理

    本文讨论:Spring IOC的核心概念和原理

    1、在讨论主题之前,先说一说耦合和内聚的概念

      耦合:指的是两个模块或者类之间存在着某种关联,比如说,在类A的方法中调用了类B的方法,那么类A和类B就产生了耦合。一旦两个类或者模块之间产生了耦合,那么在修改其中一个的时候,极有可能牵涉到另外一个。耦合是不可避免的,但是在设计软件系统的时候,应该把耦合降到最低,否则以后维护这个软件系统是非常困难的。

      内聚:指的是一个模块、一个类甚至一个方法具有专一的功能。也就是说,一个方法只做一件事情,save方法只将实体保存到数据库,find方法只从数据库抓去数据,而不是在save方法中既保存数据又查询数据返回。如果一个模块或者方法做的事情越多,那么修改起来是很蛋疼的,不利于扩展,这样也较少的牵扯到其他模块和类。

      在软件开发中,应该设计出低耦合高内聚的模块和类。

    2、IOC的概念

      Spring的核心之一就是IOC(Inversion Of Controller),中文名控制反转。很多人都知道控制反转,但是到底是什么被反转了?首先,回顾一下传统的开发方式,要实现一个业务逻辑,一般情况下至少需要两个或两个以上的类来共同协作完成,通常,一个对象在使用他合作对象(依赖对象)时都需要通过new Object()来完成合作对象的申请工作,这样对象间的耦合度增高了。而IOC的思想是:Spring容器来实现这些对象的创建和协调工作,对象只需要关心本身的业务逻辑就可以了,由此可以看出,IOC指的是获得依赖对象的责任被反转了。

    3、DI的概念

      DI(Dependency Injection)依赖注入,DI是IOC的核心,什么是依赖注入呢?例如,在Action中引用了Service,那么在完成Action的业务逻辑的需要依赖Service对象,那么Spring就会把依赖的Service自动注入到Action中。那么Spring是怎么实现依赖注入的呢?答案是Java的反射,它允许程序动态的生成对象,调用对象的方法,改变对象的属性,Spring就是通过反射来实现依赖注入的

  • 相关阅读:
    LinkedList实现原理(JDK1.8)
    ArrayList实现原理(JDK1.8)
    java集合讲解
    MySQL系列:MySQL的基本使用
    MySQL系列:一句SQL,MySQL是怎么工作的?
    MySQL系列:走进数据库,相关概念你都明白吗?
    MySQL系列:Windows 下 MySQL 8.X 的安装
    SpringBoot系列:Spring Boot集成定时任务Quartz
    SpringBoot系列:Spring Boot定时任务Spring Schedule
    SpringBoot系列:Spring Boot异步调用@Async
  • 原文地址:https://www.cnblogs.com/horace/p/4386376.html
Copyright © 2011-2022 走看看