1
我試圖注入屬性到我的SpringMvcApplication(從Spring.Web.Mvc)。ASP.NET MVC Global.asax注入彈簧
public class MvcApplication : SpringMvcApplication
{
public ISomeService SomeService { get; set; }
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
// Use SomeService
}
}
然後,我有一個包含我的定義
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
<object name="HttpApplicationConfigurer" type="Spring.Context.Support.HttpApplicationConfigurer, Spring.Web">
<property name="ApplicationTemplate">
<object>
<property name="SomeService" ref="ISomeService" />
</object>
</property>
</object>
<object id="ISomeService" type="WebProject.Services.SomeService, WebProject">
<constructor-arg ref="UserService" />
</object>
</objects>
每當我嘗試使用SomeService屬性services.xml文件,我得到一個空引用異常。我的配置錯了嗎?我需要任何其他配置嗎?
我現在似乎不正確的解決方法是這樣的
protected override void ConfigureApplicationContext()
{
base.ConfigureApplicationContext();
SomeService = (ISomeService)ContextRegistry.GetContext().GetObject("ISomeService");
}
我現在只重寫該方法,因爲我不確定如何獲取對我的服務的引用。因此,您不推薦Erich Eichinger在[本文](http://forum.springframework.net/showthread.php?t=5378)中的指導,您建議在我的getter中添加一些邏輯?當你說直接訪問上下文,你的意思是通過使用'Context.GetContext()'就像我在我的重寫方法?對不起,如果這是一個愚蠢的問題,我以前從未使用過Spring。 – Chris
根本不是一個愚蠢的問題......我只是建議對現有的解決方法進行改進,但它仍應被視爲解決方法。注意你提到的帖子似乎涉及經典的asp.net支持,我不確定它是否適用於spring mvc。 – Marijn
是的,我的意思是使用上面的Context.GetContext。但是這是你通常應該避免的事情,所以請考慮這是一個改進的解決方法,而不是一個確定的解決方案。 – Marijn