思考:向一个类中传递数据的方式有几种?
    普通方法(set方法)
    构造方法
    思考:依赖注入描述了在容器中建立bean与bean之间依赖关系的过程,如果bean运行需要的是数字或字符串呢?
    引用类型
    简单类型(基于数据类型与String)

    依赖注入方法
    setter注入
    简单类型
    引用类型
    构造器注入
    简单类型
    引用类型
    两种方式:
    (1)setter注入
    引用类型:
    直接在ServiceImpl中提供对应的Set方法。
    image.png
    然后在配置文件中配置。
    image.png
    简单类型:
    直接在DaoImpl中设置简单类型变量和对应的set方法。
    image.png
    在配置文件对应的bean中配置对应的简单类型属性。注意value是由你来决定的。
    image.png
    image.png

    (2)构造器注入
    引用类型:
    直接在ServiceImpl中创建对应的构造方法。
    image.png

    并在配置文件中配置对应的constructor-arg标签。与property类似但是由于没有set方法并且使用的是构造器注入,所以使用constructor-argimage.png
    简单类型:
    基本与setter注入的简单类型差不多。
    image.png
    image.png

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

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