zoukankan      html  css  js  c++  java
  • spring IOC理解

      用spring做了几个项目后发现,对spring的IOC理解还是不够清晰,今天就来总结下自己的理解(个人的一些见解)

      以前用jsp+servlet做网站时,只是分了显示层(jsp),控制层(servlet),和数据模型层,很传统的MVC三层架构,各层之间的耦合我

    就不说了(感觉就是一锅粥...)。

      后来学了spring+hibernate开发网站,有多出来了一个服务层(service),不过一直都是拿它来调用dao层的,并没有感觉它有什么用

    (原谅我是一个彩笔...),所谓的业务逻辑也放在了控制层(controller)里完成了 ==!。不过各层之间耦合度明显降低了(哈哈哈,因为用了

    spring啊...)。以前用jsp+servlet时,想用哪个层的哪个对象直接new就好了,哪管那么多了。现在不一样了,spring是个好东西啊,IOC和AOP

    可以说就是spring的核心功能了,当然,spring的强大可不止这点。今天我要总结的是spring的IOC容器管理bean。service层要调用dao层,Controller

    层要调用service层,这层与层之间的调用可不是直接new出来就好了,首先你要面向接口开发,面向接口开发配合spring的IOC可以显著降低各层之间的

    耦合度,就拿Controller层调用service层来说吧,在controller层调用需要使用的service接口,构造方法或set方法注入,具体调用哪个service实现类这

    个就不归controller管了,spring负责为这个controller注入具体调用的实现类,默认情况下spring管理的bean是单例的,在IOC容器内只会创建一个bean

    对象,各个controller层调用的当然也就是这一个bean对象了,不过这个看需求,可以配置为多例。这样controller控制层就不会与service服务层产生过多

    耦合,因为controller要用到的具体service对象是由spring创建的,spring管理了注入依赖关系的过程,而controller调用的只是service接口,这样他们之

    间的耦合是不是降到了最低。

      上面一直在说“耦合”,那到底什么是所谓的耦合呢。我所理解的耦合就是层与层之间的关系过于紧密,例如controller层想要调用一个service层的具体对象,

    可以在controller层直接new不就得了,然后controller层还需要service层的另一个具体对象,那它再new一个,反正想要用哪个就new哪个,也很方便,功能

    一样可以实现,还不需要定义那么多接口,管理那么多的实现关系。当然,这在开发小项目在开发过程中是没问题的,但是,小项目后期也是要维护的啊,你一个

    controller层new了那么多service层的具体实现类,怎么想要扩展功能,修改需求,那改动可不是一般的大啊,修改bug也很烦有木有,就像打地鼠一样,这个bug

    改完又会出现别的bug,真的很烦啊。这就是耦合过高的缘故。

  • 相关阅读:
    解决:UIBarButtonItem size issue.尺寸
    flutter坑:Android license status unknown and also Android sdkmanager tool not found
    Ream--(objc)写事务精简方案
    SDMask(iOS蒙层遮罩弹出引导)
    HIFIMAN TWS600A听感小记——测评出街Man
    imageRectForContentRect,titleRectForContentRect,contentRectForBounds,imageRectForContentRect什么时候调用
    super performSelector: 解决调用父类私有方法的问题
    解决:target overrides the `GCC_PREPROCESSOR_DEFINITIONS`
    swift为什么不是do while?
    记录/objc2/object_setClass做了啥
  • 原文地址:https://www.cnblogs.com/SHANKS-log/p/5165172.html
Copyright © 2011-2022 走看看