Spring.Net在ASP.NET Mvc里使用的一个小例子
就贴个小例子,就不注意格式了。
1.下载dll
NuGet的下载地址:http://docs.nuget.org/docs/start-here/installing-nuget
在vs的NuGet里搜索spring.web.mvc,它会自动下载SpringNet的引用包。
安装完成之后你的项目会多三个引用,项目目录../packages文件夹下面也会多出这三个文件夹里面是SpringNet的文件。
2.写代码例子
很简单的例子。定义一个接口,一个对于接口的实现类。
namespace MvcApplication2.Models { public interface ITestDao { string TestShow(); string TestSayHello(); } }
namespace MvcApplication2.Models { public class TestDao : ITestDao { public string TestShow() { return "这里是测试信息展示!"; } public string TestSayHello() { return "hello world!"; } } }
第一种最基础的方式。直接在代码里实现IOC容器的创建和注册还有调用。
StaticApplicationContext context = new StaticApplicationContext(); context.RegisterPrototype("itestDao", typeof(TestDao), null);//itestDao是对TestDao实例注册的一个名字。 ITestDao itestDao = context.GetObject("itestDao") as TestDao;//这里调用注册的那个名字 string result = itestDao.TestShow();
第二种附带一点点配置文件。
配置文件在configuration下面
<configSections> <sectionGroup name="spring"> <section name="context" type="Spring.Context.Support.ContextHandler,Spring.Core" /> <section name="objects" type="Spring.Context.Support.DefaultSectionHandler,Spring.Core" /> </sectionGroup> </configSections> <spring> <context> <resource uri="config://spring/objects" /> </context> <objects xmlns="http://www.springframework.net"> <object id="itestDao" type="MvcApplication2.Models.TestDao" /> </objects> </spring>
IApplicationContext context = ContextRegistry.GetContext(); ITestDao itestDao = context.GetObject("itestDao") as TestDao; string result = itestDao.TestShow();
第三种跟mvc的整合。
打开mvc里的Global.asax文件
然后将MvcApplication继承的HttpApplication替换成SpringMvcApplication,SpringMvcApplication是Spring.Web.Mvc.dll里面的类。
修改完之后在控制器里加上一个属性testDao属性
然后配置文件里加一个object配置。
<configSections> <sectionGroup name="spring"> <section name="context" type="Spring.Context.Support.ContextHandler,Spring.Core" /> <section name="objects" type="Spring.Context.Support.DefaultSectionHandler,Spring.Core" /> </sectionGroup> </configSections> <spring> <context> <resource uri="config://spring/objects" /> </context> <objects xmlns="http://www.springframework.net"> <object id="itestDao" type="MvcApplication2.Models.TestDao" /> <object type="MvcApplication2.Controllers.HomeController" > <property name="testDao" ref="itestDao" /> </object> </objects> </spring>
ref表示控制器HomeController里testDao属性实例化的是itestDao里的内容。
然后所有的准备就好了。运行程序会根据配置文件里的配置自动实例化HomeController里的testDao
补充内容:
如果需要配置的映射文件太多。可以把objects部分移出web.config文件。
自己现在在根目录重新建立一个springobject.xml文件,这里需要将xml文件的属性设置成嵌入的资源。然后将objects中的内容复制进去。
<?xml version="1.0" encoding="utf-8" ?> <objects xmlns="http://www.springframework.net"> <object id="itestDao" type="MvcApplication2.Models.TestDao" /> <object type="MvcApplication2.Controllers.HomeController" singleton="false"> <property name="testDao" ref="itestDao" /> </object> </objects>
resource里uri的内容变成file://~/springobject.xml,
如果你的配置文件假设在一个object文件夹里,那路径对应的就是file://~/object/springobject.xml,
Web.config配置内容现在就变成了这样。
<configSections> <sectionGroup name="spring"> <section name="context" type="Spring.Context.Support.ContextHandler,Spring.Core" /> <section name="objects" type="Spring.Context.Support.DefaultSectionHandler,Spring.Core" /> </sectionGroup> </configSections> <spring> <context> <resource uri="file://~/springobject.xml" /> </context> </spring>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端