私は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");
}
私は自分のサービスへの参照を取得する方法がわからないため、今はそのメソッドをオーバーライドしています。だから、Erich Eichingerの[this post](http://forum.springframework.net/showthread.php?t=5378)のガイダンスに従うのではなく、ゲッターにロジックを入れることをお勧めしますか?コンテキストに直接アクセスすると、オーバーライドされたメソッドのように 'Context.GetContext() 'を使うことを意味しますか?申し訳ありませんが、それは愚かな質問ですが、私は前に春を使用したことはありません。 – Chris
愚かな質問ではありません...私は単にあなたの既存の回避策よりも改善を提案していますが、それでも回避策と考えるべきです。あなたが参照している投稿は古典的なasp.netサポートに関係しているようだが、私はそれがspring mvcのために保持しているかどうかはわからない。 – Marijn
はい、上記のようなContext.GetContextの使用を意味します。しかし、これは一般的に回避すべきものなので、明確な解決策ではなく、改善された回避策を検討してください。 – Marijn