있지만 구체적인 답변 (I이 매우 새로운 오전)에서 Spring.NET DI 주입 ... Spring.NET은 ASP를 지원하는로액션 검색을 시도 필터 (ASP.NET MVC 3)
을 수행하는 방법. NET MVC 3, 어떻게 행동 필터 내부 종속성 주입을 할 수 있습니까? 주변에서 공부했지만 전혀 실마리가 없습니다! :/
Spring.NET 다큐멘터리에서, 이것은 모두 처리되었으므로 필요한 것은 스프링의 컨텍스트에 액션 필터를 등록하고 스프링이 모든 필요한 주입을 처리한다는 것입니다. 방법.
http://www.springframework.net/doc-latest/reference/html/web-mvc3.html
그러나, 나는 그냥 일을 얻을 수 없습니다. 거기에 등 블로그를 주위에 공부하는 것은 ContextRegistry.GetContext()를 사용하여 직접 필터 공급자를 사용 또는 언급 된, 그러나 이것은 AOP을 준수 나타나지 않습니다 .. 그래서
Spring.Net & Attribute Injection
Using Spring.Net to inject dependencies into ASP.NET MVC ActionFilters
이 일을하는 올바른 방법은 무엇입니까? 나는 이것이 spring.net에 의해 이미 다뤄졌다고 생각했지만 그것은 그렇지 않다.나는 Spring.Web.Mvc3 v4.0.30319를 기준으로, 나는 ASP.NET MVC에 3
편집 실행하고 있습니다 :
SpringMvcDependencyResolver dr =
new SpringMvcDependencyResolver(ContextRegistry.GetContext());
: 나는이 시도
을 그리고 나서 dr.GetService<ITestService>();
을 통해 서비스를 받는다. 이것은 다소 효과가있는 것처럼 보이지만 올바른 실제 서비스 구현을 얻는 대신 (내 Filters.xml에서 TestService
에 대한 속성 참조를 썼다), th e 서비스의 스텁 버전. 내가 잘못 했니? 또는, 내 몸을 가리고 GetServices()
을 통해 올바른 것을 선택해야합니까?
EDIT2 :
@Andreas : 늦은 답변 죄송합니다. . 그러나, 내 Global.asax
이 그것을 가지고있다
public class MvcApplication : Spring.Web.Mvc.SpringMvcApplication
테스트하기 위해, 나는 나의 봄의 설정이 있습니다 : 내 컨트롤러에서
public class TestFilter : ActionFilterAttribute
{
public string Message { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.Controller.ViewBag.ActionMessage = Message;
base.OnActionExecuting(filterContext);
}
}
: 내 필터에서
<object type="Spring.Mvc3QuickStart.Filters.TestFilter, Spring.Mvc3QuickStart" singleton="false" >
<property name="Message" value="This is the ActionFilter message" />
</object>
나는 이것을 가지고있다 :
ViewData["Message"] = Message;
순전히이 테스트 프로젝트에서 필터에는 메시지가 삽입되어야합니다. 그러나 생산량이 예상과 다를 수 있습니다.
어떤 도움을하시기 바랍니다 :
는 여기 호스팅 완벽한 솔루션을 만들어? :) – RicL스프링 구성의 관련 부분을 게시 할 수 있습니까? Propion injection to action 필터는 SpringMvcApplication에서 global.asax를 파생시킬 때 작동합니다. – Andreas
@Andreas : 질문에 대한 답변을 편집했습니다. 흠 .. 내 편집 내용이 텍스트와 제대로 일치하는지 정확히 알 수 없거나 잘 보이지 않는 것 같습니다. – RicL