spring三种注入方式
设置Spring的作用域
或者使用枚举值设置
单例和多里使用场景
自动注入
@Primary
一个接口有多个实现被spring管理吗,在依赖注入式,spring会不知道注入哪个实现类就会抛出NoUniqueBeanDefinitionException异常
使用@Primary 来告诉Spring 注入哪个实现类
Qualifier
@ComponentScan不同的配置对性能的影响
优化bean配置对spring应用程序的性能影响
在Spring中我们可以通过设置哦组件的扫描范围来简化javaBean的注入过程
在需要大规模对象注入的场景下使用@ComponentScan注解来指定包扫描分为,当然指定包路径中的类需要加@Component注解让Spring创建管理。
懒加载
spring默认使用预加载,及在Spring项目启动时创建bean
懒加载:在spring项目启动不去创建bean, 在使用时创建
三种注入方式
字段注入(IDEA 会提示不推荐)
字段注入的缺点:
- 字段注入的bean类外部不可见
- 循环依赖问题
- 无法设置需要注入的对象为final, 也无法注入那些不可变的对象
字段注入的bean类外部不可见
使用字段注入最大的问题就是配注入类(HealthRecorSercice)的外部可见性,及HealthRecorSercice只能在ClientService 类中被访问,脱离的容器环境就无法被访问,就导致类和容器的耦合度太高,无法脱离容器使用目标对象。
在外部类new 一个ClientService 调用包含了字段注入bean的方法,就会抛出 HealthRecorSercice类空指针异常
循环依赖问题
如下A和B发生了循环依赖,但是种在Spring中是合法的编译启动Sring类时并不会抛出以异常,只有在使用到A或者B时才会报错
被字段注入的对象是在,需要注入他类的实例化之前被实例化好。
构造器注入(官方推荐)
构造器注入就是通过类的构造函数注入
构造器注入可以解决:
- 类外部不可见
- 无法设置需要注入的对象为final, 也无法注入那些不可变的对象
不能解决:循环依赖问题
代码可读性不高
使用构造器注入出现了循环依赖吗,在Spring项目启动时就会抛出循环依赖异常
set方法注入
set注入可以解决:
- 类外部不可见
- 循环依赖问题
- 无法设置需要注入的对象为final, 也无法注入那些不可变的对象
spring三种注入方式相关推荐
- Spring 三种注入方式
1.设置注入 先写demo代码 Uer.java public class User {private String username;private String password;public S ...
- spring入门之Spring 常用的三种注入方式
Spring 常用的三种注入方式 Spring 通过 DI(依赖注入)实现 IOC(控制反转),常用的注入方式主要有三种:构造方法注入,set 方法注入,基于注解的注入. 一.通过构造方法注入 先简单 ...
- Spring 依赖注入的理解及三种注入方式
Spring 依赖注入概念和三种注入方式(理解及应用) 什么是注入 要了解Spring的三种注入方式首先前提是得先了解一下什么是注入,相信很多人对这个概念都是模糊不清的,网上的解释是这样的: 依赖注入 ...
- Spring的三种注入方式(为什么推荐构造器注入?)
Spring的三种注入方式 一.属性注入 @Resource和@Autowired的区别 为什么尽量使用 @Resource? 二.setter 注入 三.构造器注入 具体可以看看Spring官网 为 ...
- 扯一把 Spring 的三种注入方式,到底哪种注入方式最佳?
循环依赖这个问题,按理说我们在日常的程序设计中应该避免,其实这个本来也是能够避免的.不过由于总总原因,我们可能还是会遇到一些循环依赖的问题,特别是在面试的过程中,面试考察循环依赖,主要是想考察候选人对 ...
- Spring 的三种注入方式?
1. 实例的注入方式 首先来看看 Spring 中的实例该如何注入,总结起来,无非三种: 属性注入 set 方法注入 构造方法注入 我们分别来看下. 1.1 属性注入 属性注入是大家最为常见也是使用最 ...
- Spring 的三种注入方式,到底哪种注入方式最佳?
1. 实例的注入方式 首先来看看 Spring 中的实例该如何注入,总结起来,无非三种: 属性注入 set 方法注入 构造方法注入 我们分别来看下. 1.1 属性注入 属性注入是大家最为常见也是使用最 ...
- .NetCore中三种注入方式的思考
.NetCore中三种注入方式的思考 原文:.NetCore中三种注入方式的思考 该篇内容由个人博客点击跳转同步更新!转载请注明出处! .NetCore彻底诠释了"万物皆可注入"这 ...
- 依赖注入的三种方式_一起学Spring之三种注入方式及集合类型注入
本文主要讲解Spring开发中三种不同的注入方式,以及集合数据类型的注入,仅供学习分享使用,如有不足之处,还请指正. 概述 Spring的注入方式一共有三种,如下所示: 通过set属性进行注入,即通过 ...
最新文章
- linux kernel makefile analysis
- 欢迎参与Java 事务讨论
- mysql 5.6.10 32_安装mysql-5.6.10-win32 解压版-略有修改
- Socket网络编程--简单Web服务器(6)
- 【leetcode】杨辉三角Ⅱ
- [2019徐州网络赛J题]Random Access Iterator
- 梦三国2英霸模式貂蝉攻略(玩大流)
- 第一篇 Qt能做什么?
- 前端微信小程序电影类仿淘票票微信小程序
- 用chrome浏览器将pdf paper整篇翻译成中文
- 【Vegas转】自信从自我欣赏开始
- 神武手游做任务链服务器维护,神武手游跑环攻略 跑环注意事项详解
- Rancher通过Aliyun-slb服务对接阿里云SLB教程 1
- alin的学习之路:序列化与protobuf
- 应用商店调研-豌豆荚
- OC语言1-前期准备
- 旧文备份:热电偶/热电偶分度表生成
- 经典坦克大战的python实现
- 脑机接口科普0008——侵入式与非侵入式
- java通过poi生成excel表格(自适应列宽、合并单元格后的边框添加)
热门文章
- android 方法超时,android socket.io中的发出或确认超时处理?
- css导航栏_使用CSS的导航栏
- ai逻辑回归_人工智能中的逻辑是什么?
- observable_Java Observable notifyObservers()方法与示例
- php删除数组中的空元素_PHP | 从数组中删除所有出现的元素
- Spring Boot(九)Swagger2自动生成接口文档和Mock模拟数据
- WebStorm文件类型关联设置
- 网页如何做到适应在手机上浏览
- 不同网段通过静态路由实现互通,华为S5700交换机开启SSH远程指定IP登陆配置(强烈推荐)
- 3D手势姿态跟踪算法:手机端实时检测,多个手势同时捕捉