Java spring的三种注入方式详解流程
作者:紫蝶侠 发布时间:2021-07-02 12:25:47
设置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, 也无法注入那些不可变的对象
来源:https://blog.csdn.net/yangshengwei230612/article/details/120866324
猜你喜欢
- 主要是重写attemptAuthentication方法导入依赖<dependency><groupId>org.s
- 小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位。当投递了无数份简历后,终于收到了一个
- JSON轻量级的数据交换格式相对于XML来说,JSON的解析速度更快,文档更小。JSON的格式{属性名:属性值,属性名:属性值,……}属性名
- Java原生SPI面向接口编程+策略模式实现建立接口Robotpublic interface Robot { /
- 面向接口编程接口的定义及功能这里从java介入吧,在java中,接口是一种特殊的类,接口里面的量都是常量,接口的方法只有定义而没有实现,换句
- 俗话说没有规矩就没有方圆,java作为一门严谨的面向对象的高级编程语言,自然对权限整个重要的问题有严格的控制。Java中,可以通过一些Jav
- Java把内存分成两种,一种叫做栈内存,一种叫做堆内存在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。
- 首先请看如下代码:public class generictype { public static void main(String str
- 本文实例讲述了C#中委托用法。分享给大家供大家参考。具体分析如下:这里演示了如何使用匿名委托来计算员工的薪水奖金。使用匿名委托简化了程序,因
- 对这种懒加载问题,最后的做法是利用Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开Hibern
- 最近在开发项目的时候遇到一个问题,在myecilpes上使用googlede gson读取项目中的json文件成功,然后把项目发布到tomc
- 枚举是 C# 中最有意思的一部分,大部分开发人员只了解其中的一小部分,甚至网上绝大多数的教程也只讲解了枚举的一部分。那么,我将通过这篇文章向
- 在Word文档中,超链接是指在特定文本或者图片中插入的能跳转到其他位置或网页的链接,它也是我们在编辑制作Word文档时广泛使用到的功能之一。
- Oracle官网是这样介绍默认方法的,使用默认方法,可以达到往接口里面增加新的功能,而且保持与老版本代码兼容,也就是原来的实现类可以不需要被
- 第1部分 TreeSet介绍TreeSet简介TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。它继承于AbstractSe
- 1. 只有public的property能显示出来,可以通过BrowsableAttribute来控制是否显示,通过CategoryAttr
- 实际需求<if test="computationRule == '1'"> F
- 1.char数组(字符数组)->字符串可以通过:使用String.copyValueOf(charArray)函数实现。举例:char
- 简介官方API文档Scaffold的of方法说明有说明调用Scaffold.of方法是在Scallfold的子组件的Build方法中,也就是
- 以下我们系统通过原理,过程等方便给大家深入的简介了Java NIO的函数机制以及用法等,学习下吧。前言本篇主要讲解Java中的IO机制分为两