MVC5+Spring.Net 使用
MVC5+Spring.Net 使用
注意:1. Spring.Net使用到的各个DLL程序集的版本需要和项目使用的Net版本一致,最简单的方法是通过NuGet进行搜索安装
注意:2. 注入时候提示无法加载某个程序集,确保UI层已经添加其他层的程序集引用
1. global.asax.cs中public class MvcApplication : Spring.Web.Mvc.SpringMvcApplication
1.1 普通使用时候入口
//Spring.Net 创建实例的方式转为容器帮我们创建 //创建spring容器上下文 IApplicationContext ctx = ContextRegistry.GetContext(); //通过容器创建对象 IUserInfoDal efDal = ctx.GetObject("UserInfoDal") as IUserInfoDal;
2. 修改web.config,加入以下代码
1 <configSections> 2 <!--Spring.NET块配置--> 3 <sectionGroup name="spring"> 4 <section name="context" type="Spring.Context.Support.MvcContextHandler, Spring.Web.Mvc5" /> 5 <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /> 6 </sectionGroup> 7 </configSections> 8 <!--Spring 容器配置--> 9 <spring> 10 <context><!--3种方式,按从上到下顺序加载--> 11 <!--<resource uri="config://spring/objects"/>--> 12 <resource uri="file://~/Config/services.xml" /> <!--程序根目录下config文件夹中的...xml文件--> 13 <resource uri="file://~/Config/controllers.xml" /> 14 <!--<resource uri="assembly://MyAssembly/MyProject/objects-dal-layer.xml"/>--> 15 </context> 16 <!--<objects xmlns="http://www.springframework.net"> 17 <description>An example that demonstrates simple IoC features.</description> 18 <object id="UserInfoService" type="CompanyName.OA.BLL.UserInfoService, CompanyName.OA.BLL" singleton="false"/> 19 <property name="movieFinder" ref="MyMovieFinder"/> 20 </objects>--> 21 </spring>
3. 给HomeController的UserInfoService注入
namespace CompanyName.OA.UI.Portal.Controllers { public class HomeController : Controller { public IUserInfoService UserInfoService { get; set; } //.... } }
配置xml
services.xml
1 <?xml version="1.0" encoding="utf-8" ?> 2 <objects> 3 <!--xmlns="http://www.springframework.net">--> 4 <object name="UserInfoService" type="CompanyName.OA.BLL.UserInfoService, CompanyName.OA.BLL" singleton="false"> 5 </object>/> 6 </objects>
controllers.xml
1 <?xml version="1.0" encoding="utf-8" ?> 2 <objects> 3 <!--<object type="完整类名, 类所在程序集名" singleton="false">--> 4 <object type="CompanyName.OA.UI.Portal.Controllers.HomeController, CompanyName.OA.UI.Portal" singleton="false"> 5 <property name="UserInfoService" ref="UserInfoService" /><!--这里的ref指向services.xml里面的object--> 6 </object>/> 7 </objects>
通过工厂实例和静态方法创建对象
1 <!--通过工厂实例方法创建对象--> 2 <object name="DbSessionFactory" type="CompanyName.OA.DALFactory.DbSessionFactory, CompanyName.OA.DALFactory" singleton="false"/> 3 <object name="DbSession" type="CompanyName.OA.DALFactory.DbSession, CompanyName.OA.DALFactory" singleton="false" factory-method="GetCurrentDbSession" factory-object="DbSessionFactory"/> 4 5 <!--调用工厂静态方法创建对象,type直接用工厂类型--> 6 <object name="DbSession" type="CompanyName.OA.DALFactory.DbSessionFactory, CompanyName.OA.DALFactory" singleton="false" 7 factory-method="GetCurrentDbSession"/>
浙公网安备 33010602011771号