zoukankan      html  css  js  c++  java
  • 用Rider写一个由Autofac管理资源的WebAPI应用程序

    一:步骤和上一篇创建控制台项目一样,不过这次选择的是.net core区域下的Asp.net web application,Type里选择Web API(Web API类似java里的SpringBoot,而MVC则类似java里的SpringMVC);

    二:注意它会默认创建一个在项目根目录下的Controllers目录,这个在实际项目里一般不会这么做,而是写一个尽可能简单的WebApi启动Project,而且这个Project一般的命名规范是Com.Xxx.ArtifactName.Entrance;

    然后在创建其他的项目供这个启动项目来引用使用,在其他项目里命名也是Com.Xxx.ArtifactName.UserModule,表示这个是Artifact项目的User部分,然后才是Controller、Service、Service.Impl、Db、Db.Dao、Db.Service、Db.Service.Impl、Enums等等;

    不过我们只是为了演示,所以这里就按创建的来;

    三:我们为这个WebApi导入Autofac包,注意这次要导入一个额外的:Autofac.Extensions.DependencyInjection用于替换WebApi里默认的简单的IOC容器;

    四:修改Startup类【注意这个类的实现是按照约定大于配置的方式,而不是通过实现什么接口来规定行为的】,找到public void ConfigureServices(IServiceCollection services),将它改为:

    public IServiceProvider ConfigureServices(IServiceCollection services)
            {
                services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2).AddControllersAsServices();
                var builder = new ContainerBuilder();
                builder.Populate(services);
                // 这里还可以手动注入其他的如Service层的bean,不过可以register一个Module(不会管理这个对象只是起个过渡作用)然后在Module里去注册其他bean(可以扫描自己的配置和Assembly来实现自定义的一些配置)
                var container = builder.Build();
                return new AutofacServiceProvider(container);
            }
    

      这里再强调一下,如果要管理已经注入的Controller,和注入及装配其他的Bean需要自己手动添加代码去注入,可以通过扫描自定义配置来实现Aop(Castle),和通过反射实现所有符合条件的bean的自动注入及通过反射实现这些bean的特定的属性的自动装配;

    可以通过:Console.WriteLine(container.Resolve<IList<ValuesController>>().Count);得出是1,说明Controller注入到Autofac成功;

  • 相关阅读:
    IOS4.x下UIWebView的显示问题
    UIView的动画
    (转)iPhone实战:动态改变UITableView中的Cell高度
    (原) 定制使UITabBarController的tabbar选中tabbaritem时不高亮以及换背景色(支持iPad旋转)
    IOS开发问题汇总
    (转)公钥加密技术
    [Nikon D80]南门老家
    Realtime Ray Tracing RenderMan Point Cloud
    今天败入音特美ER6i
    Practice Realistic Human Skin Rendering In RenderMan Production Pipeline
  • 原文地址:https://www.cnblogs.com/silentdoer/p/10225876.html
Copyright © 2011-2022 走看看