杨中科 ASP.NET Core 中的依赖注入的使用

ASP.NET CORE中服务注入的地方

1、在ASP.NET Core项目中一般不需要自己创建ServiceCollection、IServiceProvider。在Program.cs的builder.Build()之前向builderServices中注入
2、在Controller中可以通过构造方法注入服
务。
3、演示

新建一个calculator类
在这里插入图片描述
注入
在这里插入图片描述
新建TestController
在这里插入图片描述
使用测试
在这里插入图片描述
运行:
在这里插入图片描述
特殊情况:
在构造很慢,比如扫描D盘下 所有文件
在这里插入图片描述

服务注册
在这里插入图片描述

此时使用构造函数的注入方式
在这里插入图片描述
若很多方法中,只有这一个方法使用到了 testService
在这里插入图片描述
运行:
在这里插入图片描述
导致对象构建十分缓慢,导致程序卡住。还会导致其他接口调用也十分缓慢
思考:如何在使用到这个方法的时候,才去构造它

低使用频率的服务

1、把Action用到的服务通过Action的参数注入,在这个参数上标注[FromServices]。和Action的其他参数不冲突
2、一般不需要,只有调用频率不高并且资源的创建比较消耗资源的服务才FromServices]
3、只有Action方法才能用[FromServices]普通的类默认不支持

在这里插入图片描述
也可以混合其他参数
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/608019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【DevOps-08-1】Harbor镜像仓库介绍和安装

一、简要描述 Harbor介绍Harbor安装 下载离线安装包把下载的离线安装包上传到服务器,并且解压修改Harbor配置文件启动Harbor登录Harbor管理后台Harbor管理后台首页二、Harbor介绍 前面在部署项目时,我们主要采用Jenkins推送jar包到指定服务器,再通过脚本命令让目标服务器对当…

网页内容任君采撷-右键无法复制

CSDN一年一度的博客之星评选活动已经结束,刚好点击来看看学习一下大佬们的博客。 发现绝大部分的博主对于知识的公开度都是非常高的,当然除了收费的专栏外。 其中少部分博主对自己的博文设定了一定的操作,无法直接使用博文中的内容。 现在大…

Photoshop Express一款出色的照片编辑器

​【应用名称】:Photoshop Express ​【适用平台】:#Android ​【软件标签】:#Photoshop ​【应用版本】:12.1.2 ​【应用大小】:223MB ​【软件说明】:软件升级更新。一款出色的照片编辑器&#xff0c…

生成模型 | 2024年新年新论文:audio2photoreal[正在更新中]

本博客主要包含了20240103新出的论文From Audio to Photoreal Embodiment: Synthesizing Humans in Conversations论文解释及项目实现~ 论文题目:20240103_From Audio to Photoreal Embodiment: Synthesizing Humans in Conversations 论文地址:2401.018…

8年测试总结,正确的自动化测试实施-单元/接口/Web自动化...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 今天给大家分享自…

作业--day42

界面设计 MyProWin::MyProWin(QWidget *parent): QMainWindow(parent) {/**********窗口主体**********///窗口大小this->setFixedSize(644, 493);this->setWindowTitle("QQ");this->setWindowIcon(QIcon("C:/Users/10988/Downloads/pictrue/pictrue/…

java中实现对文件高效的复制

不多说我们直接上代码: 这个是使用NIO包下的FileChannel和ByteBuffer进行文件的操作的,会比较高效。

JavaScript(WebAPI)

文章目录 1. 什么是 WebAPI2. DOM 基本概念2.1 DOM 树 3. 获取元素3.1 querySelector3.2 querySelectorAll 4. 事件初识4.1 键盘事件 5. 操作元素5.1 获取/修改元素属性5.2 获取/修改表单元素属性5.3 获取/修改样式属性 6. 操作节点6.1 新增节点6.2 删除节点 1. 什么是 WebAPI …

浅谈智慧路灯安全智能供电方案设计——安科瑞赵嘉敏

摘要: 智慧路灯,作为智慧城市、新基建、城市更新的主要组成部分,近些年在各大城市已得到很好的落地和 应用,但其与传统路灯相比集成大量异元异构电子设备,这些设备的供电电压、接口形式、权属单位各不相同, 如何设计一…

Z-library居然来中国了!

提起「Z-Library」的大名,想必有不少朋友是知道的,早在2021年11月该网站遭遇了封站,好在目前已经有了比较稳定的国内直达网址,实测过了几个月还是能够稳定访问。 Z-Library是一个电子图书馆项目,提供世界上最大的免费…

Python基础(二十一、模块的使用,else的使用tip)

文章目录 一、模块什么是模块?导入模块的语法注意事项 二、elseelse与forelse与whileelse与try-except总结 当我们编写复杂的程序时,往往需要使用到大量的函数和变量。为了提高代码的可维护性和重用性,Python 提供了模块的概念。模块是一个包…

java编程中,保证接口幂等性的实现方案讨论

一、什么是幂等性 数学中的幂等是指f(x) f(f(x)),编程领域的术语是指同一个操作,在重复提交的情况下,最终产生的影响是不变的。举例说: 提交订单时,用户在购物车界面,重复点击“下单”,服务端…

【CUDA】windows下的CUDA安装

一、前言 windows10 下安装 CUDA ,首先需要下载安装包: CUDA toolkit(工具包) 二、安装前的准备 电脑环境检查 通过cmd,输入nvidia-smi 查看自己的驱动版本和支持的CUDA版本,如下图红圈标记位置 下载 …

经典问题 | 线程打印ABA问题

问题描述 有三个线程,分别命名为 ThreadA、ThreadB 和 ThreadC。请设计一个程序,使得它们循环打印输出字符串 "A"、"B"、"C",打印顺序为 "ABCABCABC..."。要求使用线程同步机制确保按照指定顺序打印…

尤雨溪:框架挖坑靠文档来补,这算 PUA 用户吗?丨 RTE 开发者日报 Vol.122

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

JWT令牌(Token)设计

JWT(JSON Web Token)是一种基于开放标准的令牌(Token),用于在不同实体之间传递和验证信息。它由三部分组成:头部(Header)、载荷(Payload)和签名(S…

Centos Unable to verify the graphical display setup

ERROR: Unable to verify the graphical display setup. 在Linux下安装Oracle时 运行 ./runInstaller 报错 ERROR: Unable to verify the graphical display setup. This application requires X display. Make sure that xdpyinfo exist under PATH variable. No X11 DISPL…

使用Python脚本自动发送个性化微信消息通知

需求: 需要向单位同事定期(每周一次)发送每个人的业务情况提醒,同时也要发送新的登录token。如果采用邮件大家也不常看,提醒效果很差,同时邮件传输非常不安全,单位很多人邮箱默认密码不改&…

使用开源通义千问模型(Qwen)搭建自己的大模型服务

目标 1、使用开源的大模型服务搭建属于自己的模型服务; 2、调优自己的大模型; 选型 采用通义千问模型,https://github.com/QwenLM/Qwen 步骤 1、下载模型文件 开源模型库:https://www.modelscope.cn/models mkdir -p /data/…

微信小程序中组件内生命周期如何调用组件内方法

在组件的.js文件中使用 Component({/*** 组件的属性列表*/properties: {},/*** 组件的初始数据*/data: {},/*** 组件的方法*/methods:{async getData() {},},/*** 组件的生命周期*/lifetimes:{// 在组件实例进入页面节点树时执行attached:function(){this.getData() //调用}} …