webx中Spring框架的基本流程

webx中业务层是通过spring来实现的。在应用中,我们常常使用<ref>标签为JavaBean注入它依赖的对象。但是对于一个大型的系统,这个操作将会耗费我们大量的资源,我们不得不花费大量的时间和精力用于创建和维护系统中的<ref>标签。实际上,这种方式也会在另一种形式上增加了应用程序的复杂性,那么如何解决这个问题呢?Spring为我们提供了一个自动装配的机制,尽管这种机制不是很完善,但是在应用中结合<ref>标签还是可以大大的减少我们的劳动强度。前面提到过,在定义Bean时,<bean>标签有一个autowire属性,我们可以通过指定它来让容器为受管JavaBean自动注入依赖对象。【转载请注明blog.****.net/whuslei

<bean>的autowire属性有如下六个取值,他们的说明如下:(参考http://www.blogjava.net/cmzy/archive/2008/07/20/216176.html)
1、 No:即不启用自动装配。Autowire默认的值。
2、 byName:通过属性的名字的方式查找JavaBean依赖的对象并为其注入。比如说类Computer有个属性printer,指定其autowire属性为byName后,Spring IoC容器会在配置文件中查找id/name属性为printer的bean,然后使用Seter方法为其注入。
3、 byType:通过属性的类型查找JavaBean依赖的对象并为其注入。比如类Computer有个属性printer,类型为Printer,那么,指定其autowire属性为byType后,Spring IoC容器会查找Class属性为Printer的bean,使用Seter方法为其注入。
4、 constructor:通byType一样,也是通过类型查找依赖对象。与byType的区别在于它不是使用Seter方法注入,而是使用构造子注入。
5、 autodetect:在byType和constructor之间自动的选择注入方式。
6、 default:由上级标签<beans>的default-autowire属性确定。

目前,我主要是采用byName这种形式:<beans default-autowire="byName"></beans>

业务层封装Command送到spring容器中,经过分发后分配给不同的AO类进行执行,后返回Result,图示更好理解:
webx中Spring框架的基本流程

webx中这个过程的示意图如下。暂记在此,流程比较复杂,但是多理解就可以了。
注意】 spring中的注入方式中有一种是setter注入。这个很讲究。比如有个类MyClass的对象 mybean,则他对应的setter方法是"void setMybean(MyClass myclass)",而不是"void setMyClass(MyClass myclass)"!
webx中Spring框架的基本流程