AddTransient、AddSingleton、AddScopped 三者都应该在什么场景下使用

  

  网上随便一搜,能搜出一大堆对三者进行区别分析的文章,但是呢,理论是一回事,实际使用又是另外一回事,到底在何种场景下应该使用何种注入方式呢?

  

  通过这篇文章和我自身的实际经验,来说一说实际应用中的情况:

  首先 AddTransient,这个文章中说的挺明白,就是当组件无法共享时,将使用Transient。非线程安全的数据库访问对象就是一个例子。

  我根据我实际遇到的情况,着重说一下 AddSingleton 和 AddScopped,毕竟这两种实际开发中用到的比较多。

  

  于我个人而言,我比较习惯用AddScopped,但是在一次多线程的开发过程中,出现了问题——当我在class中初始化了一个AddScopped注入的函数,然后开了一个新的线程引用它时,就会dispose掉,这是因为:AddScopped为每个请求创建一个新实例,开一个新的线程,就不能共享主线程里的了,所以要改成始终是共享的AddSingleton。  

  AddSingleton在全局都是共享的,其生命周期最长。

原文地址:https://www.cnblogs.com/Mindy-hym/p/11353886.html

时间: 2024-10-03 15:47:48

AddTransient、AddSingleton、AddScopped 三者都应该在什么场景下使用的相关文章

【二】在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否函数该整数。 ```java public class Test { /** 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否函数该整数. public class Test { /** 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否函数该整数. */ public static void main(String[] args) { int[][] arr =

关于RecyclerView你知道的不知道的都在这了(下)

目录 目录 正文 6. Recycler 7. ItemAnimator 8. ItemDecoration 9. OnFlingListener 目录 由于本篇篇幅特长,特意做了个目录,让大伙对本篇内容先有个大概的了解. 另外,由于有些平台可能不支持 `` 解析,所以建议大伙可借助本篇目录,或平台的目录索引进行快速查阅. LayoutManager 1.1 LinearLayoutManager 基本效果介绍 findFirstCompletelyVisibleItemPosition() f

阿里Java面试题剖析:zookeeper 都有哪些使用场景?

面试原题 zookeeper 都有哪些使用场景? 面试官心理分析 现在聊的 topic 是分布式系统,面试官跟你聊完了 dubbo 相关的一些问题之后,已经确认你对分布式服务框架/RPC框架基本都有一些认知了.那么他可能开始要跟你聊分布式相关的其它问题了. 分布式锁这个东西,很常用的,你做 Java 系统开发,分布式系统,可能会有一些场景会用到.最常用的分布式锁就是基于 zookeeper 来实现的. 其实说实话,问这个问题,一般就是看看你是否了解 zookeeper,因为 zookeeper

3.redis 都有哪些数据类型?分别在哪些场景下使用比较合适?

作者:中华石杉 面试题 redis 都有哪些数据类型?分别在哪些场景下使用比较合适? 面试官心理分析 除非是面试官感觉看你简历,是工作 3 年以内的比较初级的同学,可能对技术没有很深入的研究,面试官才会问这类问题.否则,在宝贵的面试时间里,面试官实在不想多问. 其实问这个问题,主要有两个原因: 看看你到底有没有全面的了解 redis 有哪些功能,一般怎么来用,啥场景用什么,就怕你别就会最简单的 KV 操作: 看看你在实际项目里都怎么玩儿过 redis. 要是你回答的不好,没说出几种数据类型,也没

mongodb,redis,hbase 三者都是nosql数据库,他们的最大区别和不同定位是什么?

当SQL满足不了你的需求或者SQL 已经不是必须的或者最佳的选择时,就是你考虑这类NoSQL 的时候了. 当你的内存大于你的数据时,schema也不是太确定时,mongodb在这里静静地等待My SQL转业户为了尝鲜过来看热闹的,不改变设计模式,爽在前面痛在后面; 当你唯一追求的就是速度,又对memcached的过于简单心存芥蒂,刚好内存也比数据多时,redis俏生生站在那里; 大,好大,太大了,我说的是数据,我们128GB内存双路CPU25TB存储只够一星期的时候,估计就没有选择综合症了,HB

【转】新浪微博手机客户端刷新都是手动刷新或者下拉刷新,为什么不设计成自动刷新?

一是将主动权交给用户:二是为用户的流量着想:三是自动刷新容易造成用户的反感(即用户体验差). 1.关于点入时自动刷新 进入时是否自动刷新新浪微博和腾讯微博分成两派. 新浪微博进入时不自动刷新.碎片化的阅读时间,可为用户保留阅读进度:节省用户流量:将阅读主动权交给用户. 腾讯微博进入时自动刷新.此点相较之下不够人性化.不过对比新浪,痛点在于活跃用户少.互动质量差,UGC也较少.对于众多的非活跃用户,下载了客户端,偶尔点进去一次,自动刷新告诉你,有这么多新内容,我还活着啊,我还很活跃啊. 2.关于按

Python基础语法精心总结!看完都知道的可以往下继续学习了

? ? 这应该是最详细的Python入门基础语法总结! 进裙送上图所有书籍哦~ ? 定义变量,使用变量 input 用户自己输入值 print 打印值 可以输出多个变量 %d|%s 用于输出变量时占位 字符串(后期爬虫必备) int()把字符串转换为数字 str()把数字转换为字符串 len()获取某个字符占用的字节数 字符串可以用+连接 字符下标可以为负数 str[起始位置:终止位置:步长]切片,从起始开始截取字符串,到终止位置结束,不包括终止位置 str[::-1]倒序 str.find()

redis都有哪些数据类型?分别在哪些场景下使用比较合适?

(1)string 这是最基本的类型了,没啥可说的,就是普通的set和get,做简单的kv缓存 (2)hash 这个是类似map的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存在redis里,然后每次读写缓存的时候,可以就操作hash里的某个字段. key=150 value={ “id”: 150, “name”: “zhangsan”, “age”: 20 } hash类的数据结构,主要是用来存放一些对象,把一些简单的对象给缓存起来,后续操作的

zookeeper 都有哪些使用场景?

面试题 面试官心理分析 现在聊的 topic 是分布式系统,面试官跟你聊完了 dubbo 相关的一些问题之后,已经确认你对分布式服务框架/RPC框架基本都有一些认知了.那么他可能开始要跟你聊分布式相关的其它问题了. 分布式锁这个东西,很常用的,你做 Java 系统开发,分布式系统,可能会有一些场景会用到.最常用的分布式锁就是基于 zookeeper 来实现的. 其实说实话,问这个问题,一般就是看看你是否了解 zookeeper,因为 zookeeper 是分布式系统中很常见的一个基础系统.而且问