用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成功;
最新文章
- jq菜单折叠效果
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
- 【MYSQL】数据类型
- 处理 InnerException 最佳方案?
- MYSQL 错误日志
- Linux系统查找文件目录的命令
- ES6基础(二)
- Shell 字符串处理
- (转)解决NSMutableAttributedString富文本,不同文字大小水平轴对齐问题(默认底部对齐)
- 64位程序,利用ADO连接Oracle数据库
- IIS环境下部署https【转载】
- 存货控制中的ABC分类释义
- SQL 必知必会&#183;笔记<;20>;高级SQL特性
- Android Gallery实现3D相册(附效果图+Demo源码)
- (转)github设置添加SSH
- Java学习——this、this()、super 和 super()的使用
- 基于MFC的OpenGL程序<;转>;
- c#启动windows服务问题总结
- hdu CA Loves GCD(dp)
- Kubernetes容器调度
热门文章
- 刘志梅 201771010115 《面向对象程序设计(java)》 第七周学习总结
- 通过spark sql 将 hdfs上文件导入到mongodb
- 手机App调试(Android)
- 保存数据到Excel中
- Android Studio 制作一个循环播报的效果
- Requests对HTTPS请求验证SSL证书
- android 开发 View _10_ Path之基本操作
- CentOS6.8 下RPM方式安装MySQL5.6
- Github使用笔记——创建远程库
- 无法启动 nexus 服务,错误1067:进程意外终止。java环境变量设置技巧。