2016-02-20 24 views
0

经过很多努力,我一直无法在我的应用程序层和业务层之间创建一个简单的DI示例。无法获得弹簧依赖注入以在简单的Web应用程序上工作

这里是我的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"/> 
     <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/> 
    </sectionGroup> 
</configSections> 
<spring> 
    <parsers> 
     <parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/> 
     <parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data"/> 
    </parsers> 
    <context> 
     <resource uri="config://spring/objects"/> 
     <resource uri="~/BusinessLayer/Business.xml"/> 
     <resource uri="~/Web.xml"/> 
    </context> 
    <objects xmlns="http://www.springframework.net"  xmlns:db="http://www.springframework.net/database"  xmlns:tx="http://www.springframework.net/tx"> 
    <!-- Pages --> 
    </objects> 
</spring> 

这是Business.xml

<?xml version="1.0" encoding="utf-8" ?> 
    <objects xmlns="http://www.springframework.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd"> 
    <object id="UserBLL" type="Kupla.BusinessLayer.UserBLL, Kupla.BusinessLayer"> 
    </object> 
</objects> 

这是在web.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<objects xmlns="http://www.springframework.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd"> 

    <object type="default.aspx"> 
    <property name="UserBLL" ref="UserBLL"></property> 
    </object> 

</objects> 

这是业务层中UserBLL.cs的定义:

namespace Kupla.BusinessLayer 
{ 
    class UserBLL : IUserBLL 
    { 
     public int TestGetUserId() 
     { 
      int userId = 1; 
      return userId; 
     } 
    } 
} 

终于在应用层的代码试图从default.aspx.cs访问业务层:

using System; 
using Kupla.BusinessLayer; 

namespace Kupla 
{ 
    public partial class _default : System.Web.UI.Page 
    { 
     private IUserBLL _userBLL; 
     public IUserBLL UserBLL 
     { 
      set { _userBLL = value; } 
     } 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      int userID = _userBLL.TestGetUserId(); 
     } 
    } 
} 

当启动该网站,_userBLL为空。我的DI在某处失败。

非常感谢。

回答

0

您是否注册httpHandler? From Spring documentation

<system.web> 
    <httpHandlers> 
    <add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/> 
    </httpHandlers> 
    <httpModules> 
    <add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/> 
    </httpModules> 
    ... 
</system.web>