一:步骤和上一篇创建控制台项目一样,不过这次选择的是.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成功;

最新文章

  1. jq菜单折叠效果
  2. Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
  3. 【MYSQL】数据类型
  4. 处理 InnerException 最佳方案?
  5. MYSQL 错误日志
  6. Linux系统查找文件目录的命令
  7. ES6基础(二)
  8. Shell 字符串处理
  9. (转)解决NSMutableAttributedString富文本,不同文字大小水平轴对齐问题(默认底部对齐)
  10. 64位程序,利用ADO连接Oracle数据库
  11. IIS环境下部署https【转载】
  12. 存货控制中的ABC分类释义
  13. SQL 必知必会&#183;笔记&lt;20&gt;高级SQL特性
  14. Android Gallery实现3D相册(附效果图+Demo源码)
  15. (转)github设置添加SSH
  16. Java学习——this、this()、super 和 super()的使用
  17. 基于MFC的OpenGL程序&lt;转&gt;
  18. c#启动windows服务问题总结
  19. hdu CA Loves GCD(dp)
  20. Kubernetes容器调度

热门文章

  1. 刘志梅 201771010115 《面向对象程序设计(java)》 第七周学习总结
  2. 通过spark sql 将 hdfs上文件导入到mongodb
  3. 手机App调试(Android)
  4. 保存数据到Excel中
  5. Android Studio 制作一个循环播报的效果
  6. Requests对HTTPS请求验证SSL证书
  7. android 开发 View _10_ Path之基本操作
  8. CentOS6.8 下RPM方式安装MySQL5.6
  9. Github使用笔记——创建远程库
  10. 无法启动 nexus 服务,错误1067:进程意外终止。java环境变量设置技巧。