思考:向一个类中传递数据的方式有几种?
普通方法(set方法)
构造方法
思考:依赖注入描述了在容器中建立bean与bean之间依赖关系的过程,如果bean运行需要的是数字或字符串呢?
引用类型
简单类型(基于数据类型与String)
依赖注入方法
setter注入
简单类型
引用类型
构造器注入
简单类型
引用类型
两种方式:
(1)setter注入
引用类型:
直接在ServiceImpl中提供对应的Set方法。
然后在配置文件中配置。
简单类型:
直接在DaoImpl中设置简单类型变量和对应的set方法。
在配置文件对应的bean中配置对应的简单类型属性。注意value是由你来决定的。

(2)构造器注入
引用类型:
直接在ServiceImpl中创建对应的构造方法。
并在配置文件中配置对应的constructor-arg标签。与property类似但是由于没有set方法并且使用的是构造器注入,所以使用constructor-arg。
简单类型:
基本与setter注入的简单类型差不多。

以上是标准写法,但是在配置文件与bean中存在紧藕。为了解决这个问题,Spring在constructor-arg中提供了type属性。一定程度上解决了上面的紧藕问题。但是如果有两个类型一致由存在问题了。
为此Spring在constructor-arg中提供了index属性。将index设置为对应参数未知即可完成注入。

依赖注入方式选择
(1)强制依赖使用构造器进行,使用setter注入有概率不进入注入导致null对象出现。
(2)可选依赖使用setter注入进行,灵活性强。
(3)Spring框架提倡使用构造器,第三方框架内部大多采用构造器注入的形式进行数据初始化,相对严谨。
(4)如果有必要可以两者同时使用,使用构造器注入完成强制依赖的注入,使用Setter注入完成可选依赖的注入。
(5)实际开发过程中还要根据实际情况分析,如果受控对象没有提供setter方法就必须使用构造器注入。
(6)自己开发的模块推荐使用setter注入。
