2016-02-20 21 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>