autowiring servletContext vs实现servletContextAware

bra*_*orm 6 spring servlets spring-mvc

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

1)简单的方法就是自动装配:

@Autowired
ServletContext servletContext;
Run Code Online (Sandbox Code Playgroud)

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();
  }

}
Run Code Online (Sandbox Code Playgroud)

这两者的优点和缺点是什么?推荐哪种方式?

Han*_*kCa -3

还没人回答,我来试试。

注释版本更简单,但在未启用自动装配的情况下(或在该功能之前的 Spring 版本中),则只有该ServletContextAware版本才能工作。

如果您启用了该功能,推荐的方法是前者。