众所周知,Spring在java中是很常见的框架,Spring.Net虽然体积比较大,但是功能相对齐全,本文介绍在VS2017 .Net FrameWork 4.6.1环境下,如何快速使用Spring.Net的IOC功能。话不多说,开撸Demo!

1 准备工作

1.1新建解决方案文件夹,新建BLL、IBLL类库项目:

1.2 在IBLL层中添加测试接口ITest.cs

    public interface ITest
{
string GetName();
int GetAge();
}

1.3 在BLL层中添加具体的实现类TestBll并继承1.2中接口:

public  class TestBll: ITest
{
public string GetName()
{
return "Test";
} public int GetAge()
{
return ;
}
}

1.4 添加WebTest 项目,并添加相应的测试Controller:

2 引入Spring.Net所需Nuget包

2.1 在WebTest中添加Nuget包:

2.2 在Web.Config文件中配置Spring.Net节点:

<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.ContextHandler,Spring.Core" />
</sectionGroup>
</configSections>
<!--Spring.Net节点配置-->
<spring>
<!--容器配置-->
<context>
<resource uri="file://~/Config/controller.xml" />
<resource uri="file://~/Config/service.xml" />
</context>
</spring>

2.3 在WebTest目录下新建Config文件夹并新建controller.xml和service.xml文件,配置如下:

2.3.1 controller.xml

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
<description>An example that demonstrates simple IoC features.</description>
<!--object的name可以自定义,property中的属性name不能自定义-->
<object type="WebTest.Controllers.SpringDoNetTestController,WebTest" singleton="false">
<property name="itest" ref="TestService"></property>
</object>
</objects>

2.3.2 service.xml

<?xml version="1.0" encoding="utf-8" ?>
<objects>
<object name="TestService" type="BLL.TestBll,BLL">
</object>
</objects>

这两个文件在Web.Config文件中已经被添加,记得controller文件要放在上面。

2.4 让Spring.Net接管MVCApplication:

在global文件中做如下调整:

3 测试

3.1 Controller文件中添加如下代码,记得添加相应的Index视图:

public class SpringDoNetTestController : Controller
{ public ITest itest { get; set; }
// GET: SpringDoNetTest
public ActionResult Index()
{
var name = itest.GetName();
return View(name);
}
}

3.2 打断点测试

4 可能出现的情况

4.1  未能加载文件或程序集“System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。

解决方法:Nuget安装或更新Microsoft.AspNet.WebApi,

      安装命令:Install-Package Microsoft.AspNet.WebApi

    更新命令:Update-Package Microsoft.AspNet.WebApi

4.2  Could not load type from string value 'BLL.TestBll,BLL'.

解决方法:引用BLL以及IBLL

5 后记

  本篇Demo在GitHub可以下载,下载地址为:https://github.com/WangBank/SpringDoNetForVS2017

  这篇文章是关于Spring.Net中IOC功能的简单实用,以后会逐渐更新其AOp功能以及其他IOC框架,譬如Unity、AutoFac等等,希望大家可以支持。

  

接之前的文章,VS2017中使用Spring.NET配置以及使用方法(framework4.6.1超详细)的更多相关文章

  1. Spring面试题总结的很全面,附带超详细答案

    1.什么是Spring? Spring是一个开源的Java EE开发框架.Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性.Sprin ...

  2. Eclipse中使用Spring IOC容器的具体方法

    1.通过IOC容器创建对象,并为属性赋值 在IOC容器本身对象创建时(xml文件加载时),会将配置文件中配置好的bean先创建出来,按照xml文件中配置的先后顺序创建 <bean id=&quo ...

  3. 在VMware15中安装虚拟机并使用Xshell连接到此虚拟机(超详细哦)

    首先点击创建新的虚拟机. 此处默认, 点击下一步 默认, 点击下一步 此处可以设置你的虚拟机名称和安装位置(强烈建议不要将安装位置放在系统盘). 此处可根据自己的电脑配置来设置(建议2,4),后续可以 ...

  4. XNA、FNA以及在VS2017中编写XNA

    XNA是早期DX SDK支持的C#游戏开发环境,虽然现游戏开发大多是以Unity3D,Unreal 4为主,但是许多独立游戏开发者,特别是2D游戏,依然使用XNA进行开发, 纠其原因,猜测是C#开源且 ...

  5. 在Servlet(或者Filter,或者Listener)中使用spring的IOC容器

    web.xml中的加载顺序为:listener > filter > servlet > spring. 其中filter的执行顺序是filter-mapping在web.xml中出 ...

  6. 一:优化Docker中的Spring Boot应用:单层镜像方法

    优化Docker中的Spring Boot应用:单层镜像方法 1.Docker关键概念 2.镜像层内容很重要 3.镜像层影响部署 4.Docker中的Spring Boot应用 5.单层方法 5.1 ...

  7. Java中Date和Calender类的使用方法

    查看文章     Java中Date和Calender类的使用方法 2009-10-04 20:49 Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着 ...

  8. Spring入门配置(一) - IOC

    一.初始命名空间配置 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="h ...

  9. step6----->往工程中添加spring boot项目------->修改pom.xml使得我的project是基于spring boot的,而非直接基于spring framework

    文章内容概述: spring项目组其实有多个projects,如spring IO platform用于管理external dependencies的版本,通过定义BOM(bill of mater ...

随机推荐

  1. leetcode101

    /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...

  2. .net core 微服务之日志落盘设计

    原文:.net core 微服务之日志落盘设计 目录 1.设计目标 2.日志流程 3.串联请求事务 3.1 请求ID 3.2 处理服务器.服务 3.3 处理接口名 3.4 日志的发生时间 3.5 接口 ...

  3. 无法启动 nexus 服务,错误1067:进程意外终止。java环境变量设置技巧。

    Nexus启动失败 wrapper.log记载: 无支持版本 51.0,版本51.0指的是Java1.7. 分析: nexus版本为2.14.8,适用JRE版本为1.7. 已配置JAVA_HOME为1 ...

  4. python中的异常处理常用方法

    异常处理 什么是异常? 异常就是与正常情况不同,程序在执行过程中出现错误,导致无法执行完毕.异常其实就是代码执行过程中出错. 常见的一些异常 AttributeError 试图访问一个对象没有的属性, ...

  5. 作为一名程序员,在面试中如何展现你Python的coding能力?

    来源商业新知,原文标题:如何在一场面试中展现你对Python的coding能力? 如果你已经通过了招聘人员的电话面试,那么下面正是该展现你代码能力的时候了.无论是练习,作业,还是现场白板面试,这都是你 ...

  6. 原生js实现Base64编码解码

    注:ie10+ var str = window.btoa("liusong"); console.log(str); var s = window.atob("bGl1 ...

  7. HTML 元素大小

    1.元素的偏移量 元素的可见大小是由其高度.宽度决定,包括所有的内边距.滚动条和边框大小(不包括外边距). offsetHeight :元素在垂直方向上占用的空间大小,以像素计算.包括元素的高度,水平 ...

  8. django 表单使用

    Django提供对表单处理的支持,可以简化并自动化大部分的表单处理工作. 1 定义表单类 表单系统的核心部分是Django 的Form类. Django 的数据库模型描述一个对象的逻辑结构.行为以及展 ...

  9. load 过高分析办法

    1.top -H 找到占用cpu较高的进程2.top -Hp pid 找到该进程下占用cpu较高的线程id3.sudo -u adminjstack -F 进程id > ~/stack.txt ...

  10. linux服务器系统负载监控-shell脚本

    一.监控服务器系统负载情况: 1.用uptime命令查看当前负载情况(1分钟,5分钟,15分钟平均负载情况) # uptime   15:43:59 up 186 days, 20:04,  1 us ...