我为我的参数设置了一个很好的Spring参数映射,不幸的是我有一个组件没有通过DispatcherServlet传递,我很难找到一种方法让映射以某种方式手动运行。
示例如下:
public class Bar {
public Bar(@RequestParam("map") String map) {
System.out.println("Found: " + map); // Expected result "Found: value
}
}
public class Foo {
public static void main(String[] args) {
context = new ClassPathXmlApplicationContext("META-INF/context.xml");
String pseudoUrl = "/?map=value"
Bar bar = context.getBeans('bar', pseudoUrl);
}
}
它可以以某种方式起作用吗?因为你可以成像传递的数据有一个更复杂的结构,因此我想避免我自己编写一个解析器。
干杯。
答案 0 :(得分:0)
您基本上可以遵循DispatcherServlet.doDispatch()
does:
HandlerMapping
,(spring-webmvc.jar 3.1.2-RELEASE中DispatcherServlet的第1058行),测试HandlerMapping.getHandler(request)
是否返回非空HandlerAdapter.supports(handlerMapping)
是否返回true HandlerAdapter.handle(request, ...)
并处理输出(第923行)这将要求您将伪Url捆绑为伪HttpServletRequest等。
另一方面,如果你知道你总是希望从main()
方法中的上下文中获取特定的bean,我只会向Spring询问该bean并明确调用该方法,而不是处理将bean映射到URL(我假设它没有改变)。