构造方法:
优点:
1.构造函数可以保证一些重要的属性在Bean实例化时就设置好,避免因为一些重要属性没有提供,导致一个无用Bean实例的情况;
2.不需要未每个属性提供setter方法,减少了类的方法个数;
3.可以更好的封装类变量,不需要未每个属性指定setter方法,避免外部错误的调用
缺点:
1.如果类属性众多,构造函数的签名将变成庞然大物,可读性差
2.灵活性不强,在有些属性是可选的情况下,如果通过构造函数注入,也需要为可选的参数提供一个null值
3.如果有多个构造函数,需要考虑配置文件和具体构造函数匹配歧义的问题,配置上相对复杂
4.构造函数不例如类的继承和扩展,因为子类需要引用父类复杂的构造函数
5.构造函数注入时有时会造成循环依赖的问题
--引自 spring3.x企业实战