.net core框架学习之配置框架

配置是应用程序发布到各种环境的必备能力。.net core框架本身集成了强大的配置功能,支持多种配置源数据读写。

经常使用的nuget包

Microsoft.Extensions.Configuration.Abstractions   //抽象包
Microsoft.Extensions.Configuration           //实现包
Microsoft.Extensions.Configuration.Binder      //强类型绑定
Microsoft.Extensions.Configuration.Json        //配置Json文件 
Microsoft.Extensions.Primitives           //配置验证 
Microsoft.Extensions.Options //配置选项

框架核心接口

IConfigurationBuilder     //建造者接口
IConfigurationRoot        //配置根
IConfigurationSource    //配置源接口  
IConfigurationProvider  //配置提供程序接口

  配置框架应用了建造者模式,我们需要将配置源提交给建造者,通过建造者接口提供的build方法,创建IConfigurationRoot实例,它的配置文件的根,我们可以通过IConfigurationRoot实例访问到配置文件。通过实现IConfigurationSource ,IConfigurationProvider 

两个接口,我们也可以在框架中添加自定义的配置源。

Web Api项目的简单实例

  在appsettings.json中设置配置文件

{
  "key1": "nihao",
  "section1": {
    "key1": [ "1", "2" ],
    "key2":4
  }
}

  构造函数中添加IConfiguration接口,并使用_configuration读取配置

private readonly IConfiguration _configuration; 
public WeatherForecastController(IConfiguration configuration)
{
      _configuration = configuration;
}

[HttpGet]
public string Get()
{
    Console.WriteLine(_configuration["key1"]);   //读取配置
    Console.WriteLine(_configuration.GetSection("section1")["key2"]);  
    return "OK";
}

  因为ASP.NET Core框架已经默认添加了appsettings.json的配置源,所以我们直接使用IConfiguration接口就可以读取到其中的配置,如果我们需要添加新的配置文件则需要手动添加(注意:后添加的配置源,会覆盖掉与前面配置源相同key的value值。)

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration(builder => {
            builder.AddJsonFile("dbsettings.json", false, true); //添加新的配置源
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });
}

控制台程序实例

IConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddJsonFile("appsettings.json", false, true);
var iconfigurationRoot = configurationBuilder.Build();
Console.WriteLine($"key1 {iconfigurationRoot["key1"]}");

 

 

 

  

        

  

  

.net core框架学习之配置框架

上一篇:seata使用及配置详解


下一篇:php设计模式 之观察者模式 与Laravel 的事件