读书人

spring思维学习-IOC容器

发布时间: 2012-08-27 21:21:56 作者: rapoo

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等方式,这里不再介绍。

读书人网 >编程

热点推荐