构造器注入简单类型(了解)在bean中定义简单类型属性并提供可访问的set方法
public class BookDaoImpl implements BookDao{ private int connectionNumber;pubilc void setConnectionNumber(int connectionNumber){this.connectionNumber = connectionNumber;}}配置中使用constructor-arg标签value属性注入简单类型数据
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">根据构造方法参数名称注入<constructor-arg name="connectionNum" value="https://www.huyubaike.com/biancheng/10"/></bean><bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/></beans>构造器注入引用类型(了解)在bean中定义引用类型属性并提供可访问的构造方法
public class BookDaoImpl implements BookDao{ private BookBao bookBao;pubilc void setConnectionNumber(int connectionNumber){this.bookBao = bookBao;}}配置中使用constructor-arg标签ref属性注入简单类型数据
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="bookService" class="com.itheima.service.impl.BookServiceImpl"><constructor-arg name="userDao" ref="userDao"/><constructor-arg name="bookDao" ref="bookDao"/></bean></beans>构造器注入参数配置问题(了解)在前面我们已经介绍了构造器的注入方法
但如果我们在bean中的数据名称发生改变 , 配置就不再适配 , 所以提供了一些方法来解决参数配置问题:
- 配置中使用constructor-arg标签type属性设置按形参类型注入
<!--解决形参名称的问题 , 与形参名不耦合--><bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">根据构造方法参数类型注入<constructor-arg type="int" value="https://www.huyubaike.com/biancheng/10"/><constructor-arg type="java.lang.String" value="https://www.huyubaike.com/biancheng/mysql"/></bean><bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/><bean id="bookService" class="com.itheima.service.impl.BookServiceImpl"><constructor-arg name="userDao" ref="userDao"/><constructor-arg name="bookDao" ref="bookDao"/></bean>- 配置中使用constructor-arg标签index属性设置按形参类型注入
<!--解决参数类型重复问题 , 使用位置解决参数匹配--><bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"><!--根据构造方法参数位置注入--><constructor-arg index="0" value="https://www.huyubaike.com/biancheng/mysql"/><constructor-arg index="1" value="https://www.huyubaike.com/biancheng/100"/></bean><bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/><bean id="bookService" class="com.itheima.service.impl.BookServiceImpl"><constructor-arg name="userDao" ref="userDao"/><constructor-arg name="bookDao" ref="bookDao"/></bean>依赖注入方式选择依赖注入方式有以下选择标准:- 强制依赖使用构造器进行 , 使用setter注入有概率不进行注入导致null对象出现
- 可选依赖使用setter注入进行 , 灵活性高
- Spring框架倡导使用构造器 , 第三方框架内部大多数采用构造器注入的形式进行数据初始化 , 相对严谨
- 如果有必要可以两者并用 , 使用构造器注入完成强制依赖的注入 , 使用setter注入完成可选依赖的注入
经验总结扩展阅读
- 手机指南针怎么看(指南针怎么看方向)
- 指南针怎么看方向(指南针罗盘)
- 指南针怎么看东南西北(指南针怎么看家里方位)
- 星姿妍彩妆是什么牌子的彩妆?
- 飞甩鸡毛是什么牌子?
- 爱琪梅花是什么电视剧中的人物?
- 晒斑和黄褐斑的区别是什么?
- 父母爱情安泰结局是什么?
- 晒黑了怎么快速变白?
- 飞乔是什么牌子?
