1

私はSpringMvcApplicationにプロパティを挿入しようとしています(Spring.Web.Mvcから)。私はSomeServiceプロパティを使用しようとするたびにASP.NET MVC Global.asax Springでの注入

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> 

私の定義が含まれservices.xmlファイルを持って、私はnull参照の例外を取得します。私の設定は間違っていますか?追加設定が必要ですか?

今それが適切なようではありませんのための私の回避策は、これが

protected override void ConfigureApplicationContext() 
{ 
    base.ConfigureApplicationContext(); 

    SomeService = (ISomeService)ContextRegistry.GetContext().GetObject("ISomeService"); 
} 

答えて

3

あるMvcApplicationは私に、それは一種の奇妙に見えますので、実際には、Spring.netコンテキストを設定SpringMvcApplicationクラスを拡張しますdiを使用してプロパティを設定します。

オーバーライドするメソッドは、asp.net mvcインフラストラクチャに渡される直前にSpring.netアプリケーションコンテキストの最後の2回目の変更を行うことを目的としています。

場合によっては、SomeServiceにゲッターに直接コンテキストをアクセスさせることで、少し改善することができます。このようにすれば、Spring管理オブジェクトスコープの利点が得られます。

+0

私は自分のサービスへの参照を取得する方法がわからないため、今はそのメソッドをオーバーライドしています。だから、Erich Eichingerの[this post](http://forum.springframework.net/showthread.php?t=5378)のガイダンスに従うのではなく、ゲッターにロジックを入れることをお勧めしますか?コンテキストに直接アクセスすると、オーバーライドされたメソッドのように 'Context.GetContext() 'を使うことを意味しますか?申し訳ありませんが、それは愚かな質問ですが、私は前に春を使用したことはありません。 – Chris

+0

愚かな質問ではありません...私は単にあなたの既存の回避策よりも改善を提案していますが、それでも回避策と考えるべきです。あなたが参照している投稿は古典的なasp.netサポートに関係しているようだが、私はそれがspring mvcのために保持しているかどうかはわからない。 – Marijn

+0

はい、上記のようなContext.GetContextの使用を意味します。しかし、これは一般的に回避すべきものなので、明確な解決策ではなく、改善された回避策を検討してください。 – Marijn

関連する問題