• 使用 Qjx.CustomCache 在接口进行AOP 数据缓存


    日常工作中免不了用缓存,总不能在每个代码块加上缓存

    我用Qjx.CustomCache 中间件,进行AOP拦截,统一设置API缓存

    步骤如下

    (1)引入nuget:Qjx.CustomCache

    (2)改造Program

      public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    //改用Autofac来实现依赖注入
                    .UseServiceProviderFactory(new AutofacServiceProviderFactory())
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                        
                    });

    (3)改造Startup

      public IConfiguration Configuration { get; }
    
    
            //autofac 新增
            public ILifetimeScope AutofacContainer { get; private set; }
      public void ConfigureServices(IServiceCollection services)
            {
                //支持redis
               services.AddRedisCacheSetup(o=> { o.Configuration = "localhost"; });
                //支持本地缓存
                 //services.AddMemoryCacheSetup();
    //other code
    public void ConfigureContainer(ContainerBuilder builder)
            {
    
                builder.RegisterType<CacheAOP>();
                var assembly = this.GetType().GetTypeInfo().Assembly;
                builder.RegisterAssemblyTypes(assembly).EnableClassInterceptors();
          }

    (4)改造API 在需要AOP拦截的类上加上

    [Intercept(typeof(CacheAOP))]
    [Intercept(typeof(CacheAOP))]
        [ApiController]
        [Route("[controller]")]
    
        public class WeatherForecastController : ControllerBase

    (5)改造方法

    在需要缓存的地方加上如下缓存单位S

    [Caching(AbsoluteExpiration = 1000, KeyName = "id-{#id}", Method = CacheMethod.Add)
               ]
      [Route("adddata1")]
            [HttpGet]
            [Caching(AbsoluteExpiration = 1000, KeyName = "id-{#id}", Method = CacheMethod.Add)
               ]
            public virtual  Xuliehua adddata1([FromQuery] Myid myid)
            {
                Debug.WriteLine("this is getnme");
                Xuliehua hua = new Xuliehua();
                hua.obj = DateTime.Now.ToString();
                return hua;
            }
  • 相关阅读:
    前端资源分享
    Java的wait(), notify()和notifyAll()使用心得(转)
    Java 理论与实践: 处理 InterruptedException(转)
    关于线程中断的总结
    Python入门(good)
    看着自己有什么样的资源,利用好这些资源就好了。不要看着别人的资源流口水(转)
    android手机SD卡中的android_secure目录
    Android中ExpandableListView控件基本使用
    华为的面试经历
    Flex强制类型转换错误
  • 原文地址:https://www.cnblogs.com/qiejinxing/p/14654271.html
Copyright © 2020-2023  润新知