什么是DI
Dependence Injection 依赖注入
把一个组件的值 设置给另外一个组件的过程 叫依赖注入
DI
解决的问题就是组件的装配问题
DI的三种实现方式
setter 注入
参考类型对应的set方法 来进行值的设置
在bean 标记中 出现如下配置
这是设置值 所以参考的是 set方法去掉set 然后首字母小写
如果要赋值复杂的值 则需要使用 ref, value 能赋值的类型有 八种基本类型 和 封装类 String 枚举构造器注入
参考的是构造方法的参数 只要构造方法的参数能匹配上 则直接调用对应的带参构造
在bean 标记中 出现如下配置 把上面的 property 标记 换成 constructor-arg
注意我们可以使用 index 替换 name,index 代表参数的编号 编号0开始自动化注入
主要解决复杂值的注入问题
只要在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 容器中取值 语法是 把之前的 $
换成 #
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!