Spring-setter注入和构造器注入
使用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注入和构造器注入相关推荐
- 【源码分析】Spring的循环依赖(setter注入、构造器注入、多例、AOP)
写在前面 首先最简单的循环依赖demo就是:A->B 且 B->A.本文围绕这个例子去讲解setter注入的循环依赖.构造器注入循环依赖.多例的循环依赖.带AOP的循环依赖.以下是一些结论 ...
- Spring的setter方法注入和构造器注入的对比
我们知道,Spring的依赖注入,有setter方法注入,实例变量注入,构造器注入等. Spring官方文档里,提到: 依赖注入存在两种主要形式: 构造器注入 setter方法注入 注:其实对于Spr ...
- Spring官方为什么建议构造器注入?
以下文章来源方志朋的博客,回复"666"获面试宝典 前言 本章的内容主要是想探讨我们在进行 Spring 开发过程当中,关于依赖注入的几个知识点.感兴趣的读者可以先看下以下问题: ...
- setter注入和构造器注入
bean 实例在调用无参构造器创建对象后,就要对 bean 对象的属性进行初始化.初始化是由容器自动完成的,称为注入.根据注入方式的不同,常用的有两类: setter注入 构造器注入 目录 sette ...
- spring的注入(set注入、构造器注入)
目录 一.介绍 1.set注入和构造器注入是什么? 2.通俗的理解 3.set注入和构造器注入的核心原理 4.set注入和构造器注入的类型 5.set注入的外部bean和内部bean 二.set注入和 ...
- @Autowired注入、构造器注入、setter注入的使用方式?区别?
文章目录 三种注入方式的使用 1.@Autowired注入(不推荐) 2.1.构造器注入(推荐) 2.2.构造器注入-lombok升级版(推荐) 3.setter注入 循环依赖问题如何解决? 注入方式 ...
- 3.依赖注入setter注入和构造器注入
依赖注入的第一种方式,叫setter注入. 其实就是通过我们当前为属性为成员变量提前设置好的一些方式,然后通过这些方式,比如说set,比如说构造器,通过这个方式,为我们的成员变量赋值的一个过程 ioc ...
- Spring注入:配置注入(set注入和构造器注入)与注解注入
注入简介 Spring注入可以理解为是对一个对象进行初始化,也就是省去new的这个步骤,类似于工厂模式一样,通过一个工厂制造出这个对象,如果遇到修改,只需要改一处就行了.实现spring注入一般有两种 ...
- 依赖注入_set方法注入_构造器注入
属性注入 属性注入即通过 setter 方法注入Bean 的属性值或依赖的对象 属性注入使用 <property> 元素, 使用 name 属性指定 Bean 的属性名称,value 属性 ...
最新文章
- 数据结构读书笔记---------第一章 绪论
- SharePoint 2013安装图文教程
- 如何将git上的代码迁移到Coding上
- 台式计算机防盗锁怎么安装,怎样拆装防盗门锁?防盗门锁怎么进行正确安装?...
- 1.1 VMware 一步一步创建虚拟机
- java 8u111 8u112_JDK 8U112
- php怎样获取视频播放的进度条,小程序如何实现视频或音频自定义可拖拽进度条...
- Mysql 日期、字符串、时间戳互转
- cadence 常见pcb电阻_从理想到现实,从PCB设计到实际产品,生产制造环节不容忽视……...
- 将ERF格式转换成PCAP格式
- 提交数据网页设计_网站网页编写需要注意哪些问题?
- webserver的作用!
- IIS7.5 安装设置-Sql Sever2008安装设置-移动端设置等必读
- 一、Multisim软件介绍
- 2018年计算机网络考研真题
- 詹森不等式到底是什么?
- docker启动elasticsearch容器put数据时: SERVICE_UNAVAILABLE/1/state not recovered /initialized
- 【Java异常】Caused by: com.sun.mail.iap.BadCommandException: A3 BAD invalid command or parameters的解决方案
- 160个crackme 024详细题解(动态指令)
- db2 replace函数的用法_总结篇--SUBSTITU函数实用终极帖
热门文章
- 某校2019专硕编程题-队列
- Amesim学习——RC电路仿真
- 【穿越百年咖啡厅Café logo,经典不败设计 】
- Linux 下查看Ubuntu系统版本信息
- 学Python这本书不错!
- 在 E:\db\Custom\201610211635.bak 上读取失败: 38(已到文件结尾。) (Microsoft SQL Server,错误: 3203)
- 2657 二进制数字(斐波那契数列)
- 锐捷智能无线交换机的配置
- win10系统护眼色,word2016页面显示仍是白色
- 编程行业未来趋势如何