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>  
View Code

 

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"/>  

 

posted on 2016-12-20 17:24  jmlsaul  阅读(371)  评论(0)    收藏  举报