对于IOC的两种注入方式(属性值注入和构造函数注入)选择,应该考虑到以下几种因素:
1. 使用属性值注入使得很容易处理默认值和任意值,在这种情况下并不必须设定每个属性值.使用构造函数注入,容易导致产生多个多个构造函数,彼此调用.多个构造函数或多个参数将使得程序冗长和不易管理.
2. 使用属性值注入(属性值不为private)将会自动使子类继承,然而gouzaohanshu却不能.后者的限制使得子类只有创建一个和父类相关的样板函数,他将会调用父类构造函数.然而不论用哪种方式,现在大多数IDE都会很容易生成构造函数或是属性.
3. 使用属性值注入生成JAVA文档比构造函数注入更容易.
4. 运行时环境下,属性值注入可以使用反射通过属性名称操作属性.然而构造函数注入,编译后的class文件不会维持构造函数的参数空间,因此自动根据名称匹配调用不可能.
5. 属性值注入允许获取和设置属性状态(值),这种情况有益于很多状况,比如属性状态要持久化到任何存储媒介.
6. 属性值注入可以使用PropertyEditor机制在需要时自动进行类型转化,spring支持这种情况.
7. 属性值注入由于可以多次调用setter方法使得容易改变.
.........................翻译的太差,还是算了吧!.......