使用setter方法注入简单类型和引用类型

先给类中的属性创建setter方法

简单类型(基本数据类型和String):

在xml文件中使用 property 标签,name,value属性

引用类型:

在xml文件中使用property标签,name,ref属性

name:对应BookServiceImpl中的属性名

ref:对应配置文件中注册的bean的id

<?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.hyk.dao.impl.BookDaoImpl"><property name="name" value="哈哈哈"/><property name="num" value="111"/></bean><bean id="userDao" class="com.hyk.factory.UserDaoFactoryBean"/><bean id="bookService" class="com.hyk.service.impl.BookServiceImpl"><property name="bookDao" ref="bookDao"/><property name="userDao" ref="userDao"/></bean>
</beans>

使用构造器注入简单类型和引用类型

先给类创建对应的构造方法方法

简单类型:

在xml文件中使用 constructor-arg 标签,name,value属性

引用类型:

在xml文件中使用 constructor-arg 标签,name,ref属性

name:对应BookServiceImpl中的属性名

ref:对应配置文件中注册的bean的id

<?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.hyk.dao.impl.BookDaoImpl"><constructor-arg name="name" value="蛤蛤蛤"/><constructor-arg name="num" value="123"/></bean><bean id="userDao" class="com.hyk.factory.UserDaoFactoryBean"/><bean id="bookService" class="com.hyk.service.impl.BookServiceImpl"><constructor-arg name="bookDao" ref="bookDao"/><constructor-arg name="userDao" ref="userDao"/></bean>
</beans>

以上方法,耦合度很高。、

依赖注入方式选择

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

Spring-setter注入和构造器注入相关推荐

  1. 【源码分析】Spring的循环依赖(setter注入、构造器注入、多例、AOP)

    写在前面 首先最简单的循环依赖demo就是:A->B 且 B->A.本文围绕这个例子去讲解setter注入的循环依赖.构造器注入循环依赖.多例的循环依赖.带AOP的循环依赖.以下是一些结论 ...

  2. Spring的setter方法注入和构造器注入的对比

    我们知道,Spring的依赖注入,有setter方法注入,实例变量注入,构造器注入等. Spring官方文档里,提到: 依赖注入存在两种主要形式: 构造器注入 setter方法注入 注:其实对于Spr ...

  3. Spring官方为什么建议构造器注入?

    以下文章来源方志朋的博客,回复"666"获面试宝典 前言 本章的内容主要是想探讨我们在进行 Spring 开发过程当中,关于依赖注入的几个知识点.感兴趣的读者可以先看下以下问题: ...

  4. setter注入和构造器注入

    bean 实例在调用无参构造器创建对象后,就要对 bean 对象的属性进行初始化.初始化是由容器自动完成的,称为注入.根据注入方式的不同,常用的有两类: setter注入 构造器注入 目录 sette ...

  5. spring的注入(set注入、构造器注入)

    目录 一.介绍 1.set注入和构造器注入是什么? 2.通俗的理解 3.set注入和构造器注入的核心原理 4.set注入和构造器注入的类型 5.set注入的外部bean和内部bean 二.set注入和 ...

  6. @Autowired注入、构造器注入、setter注入的使用方式?区别?

    文章目录 三种注入方式的使用 1.@Autowired注入(不推荐) 2.1.构造器注入(推荐) 2.2.构造器注入-lombok升级版(推荐) 3.setter注入 循环依赖问题如何解决? 注入方式 ...

  7. 3.依赖注入setter注入和构造器注入

    依赖注入的第一种方式,叫setter注入. 其实就是通过我们当前为属性为成员变量提前设置好的一些方式,然后通过这些方式,比如说set,比如说构造器,通过这个方式,为我们的成员变量赋值的一个过程 ioc ...

  8. Spring注入:配置注入(set注入和构造器注入)与注解注入

    注入简介 Spring注入可以理解为是对一个对象进行初始化,也就是省去new的这个步骤,类似于工厂模式一样,通过一个工厂制造出这个对象,如果遇到修改,只需要改一处就行了.实现spring注入一般有两种 ...

  9. 依赖注入_set方法注入_构造器注入

    属性注入 属性注入即通过 setter 方法注入Bean 的属性值或依赖的对象 属性注入使用 <property> 元素, 使用 name 属性指定 Bean 的属性名称,value 属性 ...

最新文章

  1. 数据结构读书笔记---------第一章 绪论
  2. SharePoint 2013安装图文教程
  3. 如何将git上的代码迁移到Coding上
  4. 台式计算机防盗锁怎么安装,怎样拆装防盗门锁?防盗门锁怎么进行正确安装?...
  5. 1.1 VMware 一步一步创建虚拟机
  6. java 8u111 8u112_JDK 8U112
  7. php怎样获取视频播放的进度条,小程序如何实现视频或音频自定义可拖拽进度条...
  8. Mysql 日期、字符串、时间戳互转
  9. cadence 常见pcb电阻_从理想到现实,从PCB设计到实际产品,生产制造环节不容忽视……...
  10. 将ERF格式转换成PCAP格式
  11. 提交数据网页设计_网站网页编写需要注意哪些问题?
  12. webserver的作用!
  13. IIS7.5 安装设置-Sql Sever2008安装设置-移动端设置等必读
  14. 一、Multisim软件介绍
  15. 2018年计算机网络考研真题
  16. 詹森不等式到底是什么?
  17. docker启动elasticsearch容器put数据时: SERVICE_UNAVAILABLE/1/state not recovered /initialized
  18. 【Java异常】Caused by: com.sun.mail.iap.BadCommandException: A3 BAD invalid command or parameters的解决方案
  19. 160个crackme 024详细题解(动态指令)
  20. db2 replace函数的用法_总结篇--SUBSTITU函数实用终极帖

热门文章

  1. 某校2019专硕编程题-队列
  2. Amesim学习——RC电路仿真
  3. 【穿越百年咖啡厅Café logo,经典不败设计 】
  4. Linux 下查看Ubuntu系统版本信息
  5. 学Python这本书不错!
  6. 在 E:\db\Custom\201610211635.bak 上读取失败: 38(已到文件结尾。) (Microsoft SQL Server,错误: 3203)
  7. 2657 二进制数字(斐波那契数列)
  8. 锐捷智能无线交换机的配置
  9. win10系统护眼色,word2016页面显示仍是白色
  10. 编程行业未来趋势如何