IOC(inversion of control),学名是控制反转,也有人称为依赖注入(DI — dependency injection)。是一种十分有用的技术,它的最大贡献就是对象的解耦,和方便测试。现在在很多开源框架中看到它的影子。我在接触了spring和webwork之后,发现对IOC的实现,在这些框架中有2种形式。
第一种,是工厂+配置文件。就如spring那样。第二种,是拦截器+接口,这在webwork中有实现。前一种不需要额外的开发,但是配置文件比较复杂,庞大。第二种,需要对每种注入都开发一个拦截器和接口。这种方式比较适合web框架。第一种更适合轻量容器。
容器是用来管理对象的lifecycle(主要是创建和销毁),和dependency的。webwork的IOC容器更是专为web应用而专门设计。在webwork容器中对象的lifecycle,是和scope(application,session,request)紧密关联的。webwork提供了各个scope的listener。根据某个scope被初始化,或销毁,它会协调其中对象的lifecycle。这就是webwork容器不同于其它容器的地方。也是webwork比struts action1 先进的地方之一。
第一种,是工厂+配置文件。就如spring那样。第二种,是拦截器+接口,这在webwork中有实现。前一种不需要额外的开发,但是配置文件比较复杂,庞大。第二种,需要对每种注入都开发一个拦截器和接口。这种方式比较适合web框架。第一种更适合轻量容器。
容器是用来管理对象的lifecycle(主要是创建和销毁),和dependency的。webwork的IOC容器更是专为web应用而专门设计。在webwork容器中对象的lifecycle,是和scope(application,session,request)紧密关联的。webwork提供了各个scope的listener。根据某个scope被初始化,或销毁,它会协调其中对象的lifecycle。这就是webwork容器不同于其它容器的地方。也是webwork比struts action1 先进的地方之一。