当前位置: 首页 > news >正文

.Net Core学习笔记 框架特性(注入、配置)

注:直接学习的.Net Core 6,此版本有没有startup.cs相关的内容

项目Program.cs文件中 是定义项目加载 启动的地方

//通过builder对项目进行配置、服务的加载

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();//将项目中的控制器及相关的服务注册到容器中
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();//将Swagger相关服务注册到容器

----------------------------------------------------------------------------------------------------

builder.Services.AddScoped<服务>();//注入目标文件,如业务层、数据访问层文件

//调用此服务的主体一般在构造函数中添加注入方式

例: private readonly UserOperateServices _operateService;
        public UserController(UserOperateServices service)
        {
            this._operateService = service;
        }

        //_operateService.Execute();

 //不使用构造注入的方式  只有在调用Test的时候,才注入MyService1,且不需要在构造函数中有

        [HttpGet("Testtest")]
        public string Test([FromServices] UserOperateServices myService1, string name) 
        {
            var names = myService1.GetNames();
            return string.Join(",", names) + ",hello:" + name;
        }
//当我们想注册服务的时候,主要把注册代码放到builder.Build()之前就可以
//注册代码的顺序不会影响程序运行的效果
var app = builder.Build();
 

--------------------------------------------------------------------------------------------------------

//在CreateBuilder方法中已经完成了配置系统的初始化,就不再需要使用service.AddOption方法来注册选项的相关服务
builder.Host.ConfigureAppConfiguration((_, configBuilder) => { //此处下划线是抛元,类似于占位符
    string connStr = builder.Configuration.GetConnectionString("configServer");//在用户机密里的节点
    configBuilder.AddDbConfiguration(() => new SqlConnection(connStr));
});
//需要写配置类和配置节点的绑定
builder.Services.Configure<SmtpOptions>(builder.Configuration.GetSection("Smtp"));//SmtpOptions是配置实体类
---------------------------------------------------------------------

EF Core 与原先的使用区别不大,因为新框架注入的需求,在使用的形式上有需要处理的部分

http://www.lryc.cn/news/352475.html

相关文章:

  • 利用AI技术做电商网赚,这些百万级赛道流量,你还不知道?!
  • leetcode-560 和为k的数组
  • Spring Boot实战指南:从入门到企业级应用构建
  • OneAPI接入本地大模型+FastGPT调用本地大模型
  • Training-Free Consistent Text-to-Image Generation # 论文阅读
  • Spring 中常用的手动装载 bean 方法
  • 如何合理设置Java线程池大小
  • python3 pandas
  • 【B站 heima】小兔鲜Vue3 项目学习笔记Day02
  • RedisTemplate 实现基于 Value 操作的简易锁机制
  • 其它高阶数据结构⑦_Skiplist跳表_概念+实现+对比
  • 力扣230. 二叉搜索树中第K小的元素
  • Linux_应用篇(07) 系统信息与系统资源
  • 基于Vue的验证码实现
  • P4【力扣217,389,496】【数据结构】【哈希表】C++版
  • PE文件(六)新增节-添加代码作业
  • ICRA 2024: NVIDIA 联合多伦多大学、加州大学伯克利分校、苏黎世联邦理工学院等研究人员开发了精细操作的手术机器人
  • 探索Go语言的原子操作秘籍:sync/atomic.Value全解析
  • 【java深入学习第3章】利用 Spring Boot 和 Screw 快速生成数据库设计文档
  • 继“三级淋巴结”之后,再看看“单细胞”如何与AI结合【医学AI|顶刊速递|05-25】
  • [图解]产品经理创新之阿布思考法
  • Proteus仿真小技巧(隔空连线)
  • 抖音极速版:抖音轻量精简版本,新人享大福利
  • leetCode-hot100-数组专题之双指针
  • 完成商品SPU管理页面
  • Ansible实战YAML语言完成apache的部署,配置,启动全过程
  • 深入探索微软Edge:新一代浏览器的演进与创新
  • k8s使用Volcano调度gpu
  • x的平方根-力扣
  • hot100 -- 回溯(上)