`
jijun87120681
  • 浏览: 41673 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

spring思想学习----IOC容器

阅读更多

 

    接着上篇讲,这里先介绍下Java Bean概念。

    JavaBean具有一个无参构造器和getter/setter方法。可以作为数据对象的载体,也可以作为业务组件实现商业逻辑。和EJB重量级组件而言,通常把JavaBean成为轻量级组件。

    IOC容器:容器就是运行组件环境,上篇已经介绍过了,这里理解下IOC,控制反转。不过更适合成为DI,依赖注入。

    首先理解下为什么要用IOC?

 

 

 public class BookService

    {

        private BookDao bookDao = new HibernateBookDao();

        ...       

    }

 

 

一般我们就按照以上方式编码,这种会有以下几种缺点:

    (1)硬编码BookDao,若换成MybatisBookDao,则需要修改BookService代码

    (2)此BookDao组件的生命周期被BookService管理,无法共享此组件。就是外部需要用到BookDao组件时,需要BookService提供getter方法,访问BookDao,而这种方式很挫

    (3)若BookDao又依赖DataSource,这种组件间依赖耦合度更高

    此外还有其他缺点,比如测试复杂等

    

    OK,从上面可以看出,系统中有大量组件,而其生命周期和相关依赖由组件自己管理,会大大增加系统复杂度,组件间耦合度,增加测试和维护的困难。

    传统应用程序,控制权在应用程序本身,开发者创建BookService组件,在创建BookService组件过程中,再创建BookDao组件,然后使用BookService组件为用户服务。

    在IOC模式下,控制权发生了发转:组件的创建从应用程序转移到IOC容器,组件采用“注入”机制,将一种组件“注入”到另一种组件中。

    关于IOC的“注入机制”,有set等方式,这里不再介绍。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics