什么是DI

Dependence Injection 依赖注入
把一个组件的值 设置给另外一个组件的过程 叫依赖注入
DI 解决的问题就是组件的装配问题

DI的三种实现方式

  1. setter 注入
    参考类型对应的set方法 来进行值的设置
    在bean 标记中 出现如下配置 属性名
    这是设置值 所以参考的是 set方法去掉set 然后首字母小写
    如果要赋值复杂的值 则需要使用 ref, value 能赋值的类型有 八种基本类型 和 封装类 String 枚举

  2. 构造器注入
    参考的是构造方法的参数 只要构造方法的参数能匹配上 则直接调用对应的带参构造
    在bean 标记中 出现如下配置 把上面的 property 标记 换成 constructor-arg
    注意我们可以使用 index 替换 name,index 代表参数的编号 编号0开始

  3. 自动化注入
    主要解决复杂值的注入问题
    只要在bean 标记中 使用 autowire 属性 指定自动化注入的方式即可
    autowire 的取值有 byName byType constructor
    byName 参考的是属性名
    byType 参考的是成员变量的类型
    constructor 参考的是构造方法

参数的注入

简单值的注入

简单值包括 八种基本类型 和 对应的封装类 String 枚举
使用连接池的jar包 创建 dataSource 对象 使用容器获取数据源对象(连接池对象) 并通过这个对象
获取数据库连接

复杂值的注入

把set注入 或者构造器注入中的 value 改成 ref
或者自动化注入

集合参数的注入

java 中有 List Map Set Properties 可以在Spring 配置文件中 配置对应的标记让其创建出对应的对象

List 
    <list> 
        <value> 值 </value>
    </list>

Set  
    <set>
        <value> 值 </value>
    </set>

Map 
    <map>
        <entry  key=""   value="" /> 
    </map> 
Properties 
    <props>
        <prop key="15966667777">小泽</prop> 
        <prop key="15966667778">伟杰</prop> 
        <prop key="15966667779">小马</prop> 
    </props>

集合参数的单独定义

一个集合参数可以被单独定义出来 然后让其他对象的属性 进行引用

<util:list  id=""    
<util:set   id=""    
<util:map   id=""    
<util:properties  id=""      

Spring 的EL表达式

和之前的区别是 从Spring 容器中取值 语法是 把之前的 $ 换成 #



11月      Java

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!