.Net Core下使用IConfiguration和IOptions实现自动注入

1. 使用IConfiguration自动注入

执行到Startup的时候,IConfiguration已经被注入到services了,不需要我们额外添加注入的代码,缺省就是读取appsettings.json文件,你可以理解在Startup.cs里有隐藏的注入代码类似如下:

var builder = new ConfigurationBuilder()
               .SetBasePath(env.ContentRootPath)
               .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
               .AddEnvironmentVariables();
Configuration = builder.Build();
services.AddSingleton<IConfiguration>(Configuration);

在Controller里直接在构造函数里传入IConfiguration,看一下效果:

 

 

我们可以看到能把appsettings.json中的配置文件都加载出来。

2.使用IOptions自动注入

2.1 先定义一个JwtSetting类:

public class JwtSetting
    {
        /// <summary>
        /// 颁发者
        /// </summary>
        public string Issuer { get; set; }

        /// <summary>
        /// 接收者
        /// </summary>
        public string Audience { get; set; }

        /// <summary>
        /// 令牌密码
        /// </summary>
        public string SecurityKey { get; set; }

        /// <summary>
        ///  过期时间
        /// </summary>
        public long ExpireSeconds { get; set; }

        /// <summary>
        /// 签名
        /// </summary>
        public SigningCredentials Credentials
        {
            get
            {
                var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(SecurityKey));
                return new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            }
        }
    }

2.2 在Startup=》ConfigureServices方法中进行注入

services.Configure<JwtSetting>(Configuration.GetSection("JwtSetting"));

2.3 在Service构造函数中传入 IOptions<JwtSetting> option 

private readonly JwtSetting _jwtSetting;
        public TokenService(IOptions<JwtSetting> option)
        {
            _jwtSetting = option.Value;
        }

看效果:

 

posted @ 2020-06-05 11:25  吴政恒  阅读(2891)  评论(0编辑  收藏  举报