Asp.Net WebApi2中实现Autofac的注入
2017-12-27 00:00
197 查看
阅读此文前请先掌握小白快速入手Asp.Net WebApi2
1、使用NuGet添加Autofac、Autofac ASP.NET MVC5 Integration和Autofac ASP.NET Web API2.2 Integration
如下图:
2、创建类库
1)在解决方案中创建IocProject.Model(实体模型层)、IocProject.Dao(数据访问层)、IocProject.Service(逻辑业务层)类库,如下图:
3、创建接口和实现
1)在IocProject.Model(实体模型层)创建实体类Product,代码如下:
2)在IocProject.Dao(数据访问层)中添加IocProject.Model层的引用,并创建ProductDao类和IProuctDao接口,代码如下:
3)在IocProject.Service(逻辑业务层)中添加IocProject.Model层和IocProject.Dao层的引用,并创建ProductService类和IProductService接口,代码如下:
4、修改控制器
在IocProject.WebApi中添加IocProject.Model层、IocProject.Dao层和IocProject.Service层的引用,修改控制器ProductController中的方法,代码如下:
5、使用Autofac注入
在App_Start文件夹下新建AutofacConfig类
在Global中添加以下代码
以上就是在WebApi2中实现了Autofac的注入
6、运行项目
在浏览器Url后面加上“/api/product”查询所有的商品,加上“/api/product/2”查询单个商品,如下图:
使用Postman
7、总结
Autofac确实用起来很方便,上面只是简单的实现,如果想深入学习可以到Autofac官网去了解下。
最近在看相关文章,很多都太专业化了没怎么看懂,这是自己现在对IoC的一些理解,记录下来,要不然时间一久,也就忘了。
自己对IoC模式理解还很浅,希望得到各位的指点。
1、使用NuGet添加Autofac、Autofac ASP.NET MVC5 Integration和Autofac ASP.NET Web API2.2 Integration
如下图:
2、创建类库
1)在解决方案中创建IocProject.Model(实体模型层)、IocProject.Dao(数据访问层)、IocProject.Service(逻辑业务层)类库,如下图:
3、创建接口和实现
1)在IocProject.Model(实体模型层)创建实体类Product,代码如下:
public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } }
2)在IocProject.Dao(数据访问层)中添加IocProject.Model层的引用,并创建ProductDao类和IProuctDao接口,代码如下:
public class ProductDao:IProductDao { public Product[] Products; public ProductDao() { Products = new Product[] { new Product(){ Id = 1, Name = "一箱橙子", Price = 58 }, new Product(){ Id = 2, Name = "三包薯片", Price = 18 }, new Product(){ Id = 3, Name = "五瓶可乐", Price = 15 } }; } /// <summary> /// 查询所有商品 /// </summary> /// <returns></returns> public IEnumerable<Product> GetProductList() { return Products; } /// <summary> /// 根据id查询商品 /// </summary> /// <param name="id"></param> /// <returns></returns> public Product GetProductById(int id) { return Products.FirstOrDefault(p => p.Id == id); } }
public interface IProductDao { /// <summary> /// 查询所有商品 /// </summary> /// <returns></returns> IEnumerable<Product> GetProductList(); /// <summary> /// 根据id查询商品 /// </summary> /// <param name="id"></param> /// <returns></returns> Product GetProductById(int id); }
3)在IocProject.Service(逻辑业务层)中添加IocProject.Model层和IocProject.Dao层的引用,并创建ProductService类和IProductService接口,代码如下:
public class ProductService:IProductService { public IProductDao _productDao; /// <summary> /// 构造器注入 /// </summary> /// <param name="productDao"></param> public ProductService(IProductDao productDao) { _productDao = productDao; } /// <summary> /// 查询所有商品 /// </summary> /// <returns></returns> public IEnumerable<Product> GetProductList() { return _productDao.GetProductList(); } /// <summary> /// 根据id查询商品 /// </summary> /// <param name="id"></param> /// <returns></returns> public Product GetProductById(int id) { return _productDao.GetProductById(id); } }
public interface IProductService { /// <summary> /// 查询所有商品 /// </summary> /// <returns></returns> IEnumerable<Product> GetProductList(); /// <summary> /// 根据id查询商品 /// </summary> /// <param name="id"></param> /// <returns></returns> Product GetProductById(int id); }
4、修改控制器
在IocProject.WebApi中添加IocProject.Model层、IocProject.Dao层和IocProject.Service层的引用,修改控制器ProductController中的方法,代码如下:
public class ProductController : ApiController { public IProductService _productService; /// <summary> /// 构造器注入 /// </summary> /// <param name="productService"></param> public ProductController(IProductService productService) { _productService = productService; } /// <summary> /// 查询所有商品 /// </summary> /// <returns></returns> public IEnumerable<Product> GetProductList() { return _productService.GetProductList(); } /// <summary> /// 根据id查询商品 /// </summary> /// <param name="id"></param> /// <returns></returns> public Product GetProductById(int id) { return _productService.GetProductById(id); } }
5、使用Autofac注入
在App_Start文件夹下新建AutofacConfig类
public class AutofacConfig { public static void Run() { SetAutofacWebApi(); } /// <summary> /// 注册接口和实现 /// </summary> private static void SetAutofacWebApi() { ContainerBuilder builder = new ContainerBuilder(); HttpConfiguration config = GlobalConfiguration.Configuration; // Register API controllers using assembly scanning. builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); builder.RegisterType<ProductDao>().As<IProductDao>() .InstancePerApiRequest(); builder.RegisterType<ProductService>().As<IProductService>() .InstancePerApiRequest(); var container = builder.Build(); // Set the WebApi dependency resolver. config.DependencyResolver = new AutofacWebApiDependencyResolver(container); } }
在Global中添加以下代码
protected void Application_Start(object sender, EventArgs e) { GlobalConfiguration.Configure(WebApiConfig.Register); //Call Autofac DI configurations AutofacConfig.Run(); }
以上就是在WebApi2中实现了Autofac的注入
6、运行项目
在浏览器Url后面加上“/api/product”查询所有的商品,加上“/api/product/2”查询单个商品,如下图:
使用Postman
7、总结
Autofac确实用起来很方便,上面只是简单的实现,如果想深入学习可以到Autofac官网去了解下。
最近在看相关文章,很多都太专业化了没怎么看懂,这是自己现在对IoC的一些理解,记录下来,要不然时间一久,也就忘了。
自己对IoC模式理解还很浅,希望得到各位的指点。
相关文章推荐
- ASP.NET MVC中Autofac实现的自动注入模式
- 使用Autofac在ASP.NET Web API上实现依赖注入
- Asp.Net Mvc使用Autofac实现依赖注入
- ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下
- ASP.NET MVC中Autofac实现的自动注入模式
- 使用Autofac在ASP.NET Web API上实现依赖注入
- Asp.Net WebApi2中实现Unity的注入
- 使用Autofac在ASP.NET Web API上实现依赖注入
- ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入)
- 使用Autofac在ASP.NET Web API上实现依赖注入
- ASP.NET Core2使用Autofac实现IOC依赖注入竟然能如此的优雅简便
- ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入)
- 使用Autofac在ASP.NET Web API上实现依赖注入
- 使用AutoFac在ASP.NET Web API上实现依赖注入
- ASP.NET Core 使用 AutoFac 注入 DbContext
- ASP.NET MVC 中使用Spring.NET实现简单的属性注入
- ASP.NET MVC Unity实现依赖注入
- Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现
- 【无私分享:ASP.NET CORE 项目实战(第二章)】添加EF上下文对象,添加接口、实现类以及无处不在的依赖注入(DI)
- Autofac依赖注入在ASP.NET页面服务中的运用