zoukankan      html  css  js  c++  java
  • .Net Core 3.x Api开发笔记 -- 读取配置文件信息(四)

    上节演示Autofac使用,连接:.Net Core 3.x Api开发笔记 -- IOC,使用Autofac实现依赖注入(三) 

    本节演示如何读取应用配置信息,也就是读取 appsettings.json 文件中的配置信息

    本节通过读取数据库配置文件做完演示:

    第1步:在 appsettings.json 添加数据库配置文件

    1   //数据库连接字符串
    2   "DBConfig": {
    3     "DBType": "Mysql", //mysql、mssql、oracle
    4     "DBConnectionString": "Data Source=localhost;Database=MyShop;User Id=root;Password=123456;CharSet=utf8;port=3306", //mysql连接字符串
    5     "DBTimeout": 180, //180s  单位秒
    6     "RedisConnectionString": "127.0.0.1:6379,password=123456,abortConnect=false" //redis连接字符串
    7   }

    第2步:新建一个类:DBConfig,用于存放上述配置文件内容

        public class DBConfig
        {
            /// <summary>
            /// 数据库类型  mysql、mssql、oracle
            /// </summary>
            public string DBType { get; set; }
            /// <summary>
            /// 链接字符串
            /// </summary>
            public string DBConnectionString { get; set; }
            /// <summary>
            /// 链接超时时间
            /// </summary>
            public string DBTimeout { get; set; }
            /// <summary>
            /// redis链接字符串
            /// </summary>
            public string RedisConnectionString { get; set; }
    
        }
    
    
        //全局配置
        public class SystemContext
        {
            /// <summary>
            /// 读取数据库配置文件
            /// </summary>
            public static DBConfig dbConfig { get; set; }
    
        }

    第三步:在 Startup 文件中初始化配置文件内容

     1         public void ConfigureServices(IServiceCollection services)
     2         {
     3             services.AddControllers();
     4 
     5             //方式1
     6             //读取配置文件appsettings.json,将自定义节点绑定到DBConfig类中,在任意地方直接使用
     7             //配置文件更新,绑定的值不会实时更新
     8             SystemContext.dbConfig = Configuration.GetSection("DBConfig").Get<DBConfig>();
     9 
    10             //方式2 
    11             //将DBConfig对象注册到Service中,这样可以在Controller中注入使用
    12             //配置文件更新,绑定的值会实时更新
    13             services.Configure<DBConfig>(Configuration.GetSection("DBConfig"));
    14         }

    上边有两种配置方式,可以任选一种,方式1不会实时更新配置文件内容,方式2会实时更新配置文件内容,根据业务需求自由选择

    第四步:在应用中使用

     1         private readonly IOptionsSnapshot<DBConfig> dbConfig;   //通过注入方式读取配置文件
     2 
     3         public UserController(IOptionsSnapshot<DBConfig> _dbConfig)
     4         {
     5             dbConfig = _dbConfig;
     6         }
     7 
     8         [HttpGet]
     9         public async Task<IActionResult> GetConfig()
    10         {
    11             var result = await Task.Run(() =>
    12             {
    13                 //方式1 读取配置文件  不会实施更新内容
    14                 var dbType = SystemContext.dbConfig.DBType.ToLower();
    15                 return dbType;
    16             });
    17 
    18             //方式2 读取配置文件  可以实施更新内容
    19             var result2 = dbConfig.Value.DBType.ToLower();
    20 
    21             return Ok("方式1:" + result + ",方式2:" + result2);
    22         }

    最后测试结果显示,方式2 会跟随配置文件内容的变更实时更新,而方式1没有变化!

  • 相关阅读:
    大数据在企业中发挥的作用,以及如何驱动企业创新
    大数据在企业中发挥的作用,以及如何驱动企业创新
    学习各种预测数据的方法
    学习各种预测数据的方法
    大数据时代 企业须打好信息资源攻坚战
    大数据时代 企业须打好信息资源攻坚战
    小白学数据分析--充值记录分析
    大数据可视分析背后的商业逻辑
    大数据可视分析背后的商业逻辑
    大数据架构师必读的NoSQL建模技术
  • 原文地址:https://www.cnblogs.com/peterzhang123/p/13998097.html
Copyright © 2011-2022 走看看