一篇文章带你掌握主流基础框架——Spring( 五 )


配置中使用constructor-arg标签ref属性注入简单类型数据
构造器注入参数配置问题(了解)
在前面我们已经介绍了构造器的注入方法
但如果我们在bean中的数据名称发生改变 , 配置就不再适配 , 所以提供了一些方法来解决参数配置问题:
 

  • 配置中使用constructor-arg标签type属性设置按形参类型注入
根据构造方法参数类型注入
  • 配置中使用constructor-arg标签index属性设置按形参类型注入
依赖注入方式选择 
依赖注入方式有以下选择标准:
 
  1. 强制依赖使用构造器进行 , 使用setter注入有概率不进行注入导致null对象出现
  2. 可选依赖使用setter注入进行 , 灵活性高
  3. Spring框架倡导使用构造器 , 第三方框架内部大多数采用构造器注入的形式进行数据初始化 , 相对严谨
  4. 如果有必要可以两者并用 , 使用构造器注入完成强制依赖的注入 , 使用setter注入完成可选依赖的注入
  5. 实际开发中根据情况分析 , 如果受控对象没有提供setter方法则只能采用构造器注入
  6. 自己开发的模块尽量推荐setter注入
依赖自动装配 
在前面我们学习了手动注入的方法 , 但Spring其实为我们提供了一种依赖自动装配的语法:
 
  • IoC容器根据bean所依赖的资源在容器中自动查找并注入bean中的过程称为自动装配
 
自动装配方式:
 
  • 按类型(常用)
  • 按名称
  • 按构造方法
  • 不启用
 
自动装配语法:
 
依赖自动装配特征: 自动装配用于引用类型注入 , 不能对简单类型进行操作使用按类型装配时(byType)必须保障容器中相同类型的bean唯一 , 推荐使用使用按名称装配时(byName)必须保障容器中具有指定名称的bean , 因变量名与配置耦合 , 不推荐使用自动装配优先级低于setter注入和构造器注入 , 同时出现时 , 自动装配配置失效
依赖集合注入 
除了基本类型和引入类型外 , 我们有时也需要注入集合
下面我们简单介绍一下结合的注入:
// 数据类 package com.itheima.dao.impl; import com.itheima.dao.BookDao; import java.util.*; public class BookDaoImpl implements BookDao { private int[] array; private List list; private Set set; private Map map; private Properties properties; public void setArray(int[] array) { this.array = array; } public void setList(List list) { this.list = list; } public void setSet(Set set) { this.set = set; } public void setMap(Map map) { this.map = map; } public void setProperties(Properties properties) { this.properties = properties; } public void save() { System.out.println("book dao save ..."); System.out.println("遍历数组:" + Arrays.toString(array)); System.out.println("遍历List" + list); System.out.println("遍历Set" + set); System.out.println("遍历Map" + map); System.out.println("遍历Properties" + properties); } }100 200 300 itcast itheima boxuegu chuanzhihui itcast itheima boxuegu boxuegu china henan kaifeng案例:数据源对象管理
针对一个新的数据源对象 , 我们采用两步来创建bean(我们以druid为案例):
 
  • 导入druid坐标
4.0.0 com.itheima spring_09_datasource 1.0-SNAPSHOT org.springframework spring-context 5.2.10.RELEASE com.alibaba druid 1.1.16 MySQL mysql-connector-java 5.1.47
  • 配置数据源对象作为Spring管理的bean
案例:加载properties文件 
这个案例我们将会介绍如何加载properties文件 , 并将文件带入到property基本信息中
我们大致将步骤分为以下三步:
 
  • 开辟context命名空间:
  • 使用context命名空间 , 加载指定properties文件
  • 使用${}读取加载的属性值
 
除了上述的基本操作 , 我们在context命名空间的使用中有很多需要注意的点:
 
  • 不加载系统属性
  • 加载多个properties文件