1
我有一個彈簧mvc應用程序,它大量使用在 請求範圍中定義的bean。現在,我必須在此範圍之外使用此應用程序的一部分(在Magnolia CMS的 qwertz作業中)。這不,當然工作:如何在Spring MVC應用程序的真實請求之外激活請求範圍?
錯誤創建名爲「requestHelper」豆:範圍「要求」是 不是當前線程
活躍我不能改變的範圍豆和我不能改變代碼。所以我唯一的可能性 似乎將當前線程的範圍更改爲請求範圍模型。
我想是這樣
XmlWebApplicationContext context = (XmlWebApplicationContext) ApplicationContextProvider.getApplicationContext() ;
MockServletContext mockServletContext = new MockServletContext("/");
context.setServletContext(mockServletContext);
context.refresh();
但是這仍然沒有激活當前線程的請求範圍。我怎樣才能達到 這個?
RequestContextHolder.setRequestAttributes(
new ServletRequestAttributes(new MockHttpServletRequest()));
...
((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
.requestCompleted();
RequestContextHolder.resetRequestAttributes();
Thoguh我認爲它不是在生產中使用代碼,黑客攻擊是一個好主意:
我必須在生產環境中使用它。你爲什麼認爲這是一個壞主意? – 2012-04-24 06:54:51