要整合ASP.NET MVC和Spring.NET,需要安装Spring.NET,这个可以从官网上获得,其次在项目中导入下面的DLL文件:
下面在项目中编写如下的SpringControllerFactory.cs类:
public class SpringControllerFactory:IControllerFactory
{
private static DefaultControllerFactory defalutf = null;
public IController CreateController(System.Web.Routing.RequestContext requestContext, string controllerName)
{
//get spring context
IApplicationContext ctx = ContextRegistry.GetContext();
if (ctx.ContainsObject(controllerName))
{
object controllerf = ctx.GetObject(controllerName);
return (IController)controllerf;
}
else
{
if (defalutf == null)
{
defalutf = new DefaultControllerFactory();
}
return defalutf.CreateController(requestContext, controllerName);
}
}
public void ReleaseController(IController controller)
{
//get spring context
IApplicationContext ctx = ContextRegistry.GetContext();
if (!ctx.ContainsObject(controller.GetType().Name.Replace("Controller", "")))
{
if (defalutf == null)
{
defalutf = new DefaultControllerFactory();
}
defalutf.ReleaseController(controller);
}
}
}
编写好后,在Global.asax.cs中的Application_Start()中添加:
ControllerBuilder.Current.SetControllerFactory(typeof(UPLPMIS.Util.SpringControllerFactory));
这样就初步完成了配置的工作。
其次在web.config中的configSections节点中添加:
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/>
</sectionGroup>
最后可以在Controller中测试一下依赖注入:
<spring>
<context>
<resource uri="config://spring/objects"/>
</context>
<objects xmlns="http://www.springframework.net">
<object id="Home" type="UPLPMIS.Controllers.HomeController,UPLPMIS" singleton="false">
<property name="name" value="I am Zhang Kai"></property>
</object>
</objects>
</spring>
你会发现HomeController的Name的值为:I am Zhang Kai