每种方式都有它的缺点和优点。构造器注入保证所有的注入都被初始化,但是setter注入提供更好的灵活性来设置可选依赖。如果使用XML来描述依赖,Setter注入的可读写会更强。经验法则是强制依赖使用构造器注入,可选依赖使用setter注入。