Spring 自动连接servletContext与实现servletContextAware

Spring 自动连接servletContext与实现servletContextAware,spring,spring-mvc,servlets,Spring,Spring Mvc,Servlets,我已经看到了在服务/控制器中获取servletContextbean的两种方法 1) 简单的方法就是自动布线: @Autowired ServletContext servletContext; 2) 另一种方法是实现servletContextAware接口: @RestController("/mycontroller") public myController implements ServletContextAware { private ServletContext con

我已经看到了在服务/控制器中获取
servletContext
bean的两种方法

1) 简单的方法就是自动布线:

@Autowired
ServletContext servletContext;
2) 另一种方法是实现
servletContextAware
接口:

@RestController("/mycontroller")
public myController implements ServletContextAware {

    private ServletContext context;

    @Override
    public void setServletContext(ServletContext context) {
        this.context = context;
    }

   public String getContextPath(){
   return context.getContextPath();
  }

}

这两者的利弊是什么?推荐哪种方式?

没有人回答,所以我试试看

注释版本更简单,但如果未启用自动连线(或在该功能之前的Spring版本中),则只有
ServletContextAware
版本可以工作


如果您启用了该功能,建议使用前者。

这样的问题主要会攻击固执己见的答案。只要是建设性的,就好。这就是为什么会这样,而不是一些随机论坛?我发现,当从XML配置迁移到Java配置时,具有
@Autowired
ServletContext的类在启动时可能会失败。解决这个问题的一个方法是在这些情况下实现
ServletContextAware
,完全基于观点。实际上我不喜欢使用注释,因为这是Spring概念泄漏到您的类中。