在带有注释的Spring MVC中,我们使用@Controller标记任何POJO。
在此 Controller 中,我们可以使用autowired属性获取WebApplicationContext。

@Controller
public class HomePageController {

@Autowired
ApplicationContext act;

    @RequestMapping("/*.html")
    public String handleBasic(){
        SimpleDomain sd = (SimpleDomain)act.getBean("sd1");
        System.out.println(sd.getFirstProp());
        return "hello";
}

但是在这种方法中,我们不需要随身携带servletContext。那么,有什么办法可以让我们仍然使用获取WebApplicationContext的旧方法呢? IE。
WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext)

我们如何在这里获取servletContext?

我不会因为使用旧方法而受到任何强制。因此,这个问题只是出于好奇,无法检查 Spring 的弹性。
也可以是面试问题。

最佳答案

您可以将其注入(inject)到 Controller 中:

@Autowired private ServletContext servletContext;

或将HttpServletRequest作为参数并从那里获取:
@RequestMapping(...)
public ModelAndView myMethod(HttpServletRequest request ...){
    ServletContext servletContext = request.getServletContext()
}

关于spring - 如何在类注解@controller中获取Spring WebContext,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13206588/

10-11 04:12