• .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;
            }

    看效果:

  • 相关阅读:
    Redis进阶
    redis常用指令
    MarkDown基本语法
    JAVA多线程面试
    使用POI操作Excel
    IDEA+GIT的使用
    获取地址栏的参数
    mybatis逆向工程
    遍历map集合
    springboot批量删除
  • 原文地址:https://www.cnblogs.com/ZhengHengWU/p/13045113.html
Copyright © 2020-2023  润新知