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
}
}
은 그 때 나는 내가 null 참조 예외를 얻을, 나는 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의 파일이 있습니다. 구성이 잘못 되었습니까? 추가 구성이 필요합니까?
그 적절한 보이지 않는다 지금 내 해결은에 이상한의 종류를 보이는 나에게 그래서이
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 지원을 우려하는 것 같아요, 그리고 그것이 봄 mvc에 대해 보유하고 있는지 모르겠습니다. – Marijn
예, 위와 같이 Context.GetContext를 사용하는 것이 좋습니다. 그러나 이것은 일반적으로 피해야 할 사항이므로 명확한 해결책 대신 개선 된 해결 방법을 고려하십시오. – Marijn