接之前的文章,VS2017中使用Spring.NET配置以及使用方法(framework4.6.1超详细)
众所周知,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超详细)的更多相关文章
- Spring面试题总结的很全面,附带超详细答案
1.什么是Spring? Spring是一个开源的Java EE开发框架.Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性.Sprin ...
- Eclipse中使用Spring IOC容器的具体方法
1.通过IOC容器创建对象,并为属性赋值 在IOC容器本身对象创建时(xml文件加载时),会将配置文件中配置好的bean先创建出来,按照xml文件中配置的先后顺序创建 <bean id=&quo ...
- 在VMware15中安装虚拟机并使用Xshell连接到此虚拟机(超详细哦)
首先点击创建新的虚拟机. 此处默认, 点击下一步 默认, 点击下一步 此处可以设置你的虚拟机名称和安装位置(强烈建议不要将安装位置放在系统盘). 此处可根据自己的电脑配置来设置(建议2,4),后续可以 ...
- XNA、FNA以及在VS2017中编写XNA
XNA是早期DX SDK支持的C#游戏开发环境,虽然现游戏开发大多是以Unity3D,Unreal 4为主,但是许多独立游戏开发者,特别是2D游戏,依然使用XNA进行开发, 纠其原因,猜测是C#开源且 ...
- 在Servlet(或者Filter,或者Listener)中使用spring的IOC容器
web.xml中的加载顺序为:listener > filter > servlet > spring. 其中filter的执行顺序是filter-mapping在web.xml中出 ...
- 一:优化Docker中的Spring Boot应用:单层镜像方法
优化Docker中的Spring Boot应用:单层镜像方法 1.Docker关键概念 2.镜像层内容很重要 3.镜像层影响部署 4.Docker中的Spring Boot应用 5.单层方法 5.1 ...
- Java中Date和Calender类的使用方法
查看文章 Java中Date和Calender类的使用方法 2009-10-04 20:49 Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着 ...
- Spring入门配置(一) - IOC
一.初始命名空间配置 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="h ...
- step6----->往工程中添加spring boot项目------->修改pom.xml使得我的project是基于spring boot的,而非直接基于spring framework
文章内容概述: spring项目组其实有多个projects,如spring IO platform用于管理external dependencies的版本,通过定义BOM(bill of mater ...
随机推荐
- python大法好——模块(内置模块未完)
模块 模块是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模块. Python模块有什么作用? 1.模块内有许多函数方法,利用这些方法可以更简单的完成许多工作.2.模块 ...
- python_09 文件处理流程,文件操作方法
文件处理流程 1.打开文件,得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 f=open('test.txt',encoding='gbk') data = f.read() ...
- ReactiveX 学习笔记(22)使用 RxJS + Angular 进行 GUI 编程
课题 程序界面由3个文本编辑框和1个文本标签组成. 要求文本标签实时显示3个文本编辑框所输入的数字之和. 文本编辑框输入的不是合法数字时,将其值视为0. 3个文本编辑框的初值分别为1,2,3. 创建工 ...
- 记号一下selenium+Firefox自动下载的参数
参考: https://blog.csdn.net/wxstar8/article/details/80782556 https://blog.csdn.net/xiaoguanyusb/articl ...
- angular中使用ckplayer播放器
原文地址:https://www.cnblogs.com/jying/p/9519557.html ,转载请说明出处. ckplayer官网:http://www.ckplayer.com 使用ckp ...
- python学习笔记(五)- 文件操作
1.读文件f = open('word.txt',encoding='utf8') #默认打开当前目录下的文件,打开其它目录用绝对路径#f = open('word.txt',encoding='u ...
- Flask最强攻略 - 跟DragonFire学Flask - 第一篇 你好,我叫Flask
首先,要看你学没学过Django 如果学过Django 的同学,请从头看到尾,如果没有学过Django的同学,并且不想学习Django的同学,轻饶过第一部分 一. Python 现阶段三大主流Web框 ...
- Cocos2dx开发之屏幕适配
由于各种智能手机的屏幕大小都不一致,会出现同一张图片资源在不同的设备分辨率下显示不一样的问题.为避免这样的情况,需要Cocos引擎能提供多分辨率的支持,也就是说要求实现这样的效果 — 开发者不需要考虑 ...
- 9.22 Sans-serif VS Serif
在FCC做题遇到了sans-serif 以及 serif字体,第一次遇到,所以查了一下: 西方国家字母体系分为两类:serif 以及sans serif. 原来Sans-serif是无衬线字体,没有额 ...
- Sublime Text3快捷键大全
选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中并更改所有相同的变量名.函数 ...