【问题标题】:autowiring servletContext vs implementing servletContextAware自动装配 servletContext 与实现 servletContextAware
【发布时间】:2015-11-22 07:03:11
【问题描述】:

我已经看到了两种在服务/控制器中获取 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();
  }

}

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

【问题讨论】:

  • 这样的问题主要攻击自以为是的答案。
  • 只要有建设性,就很好。这就是为什么 SO 而不是一些随机论坛?
  • 我发现在从 XML 配置迁移到 Java 配置时,具有 @Autowired ServletContext 的类在启动时可能会失败。对此的一种补救措施是在这些情况下实施ServletContextAware

标签: spring spring-mvc servlets


【解决方案1】:

没有人回答,所以我会试一试。

注解版本更简单,但如果没有启用自动装配(或在此功能之前的 Spring 版本中),则只有 ServletContextAware 版本可以工作。

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

【讨论】:

  • 完全基于意见。我实际上更喜欢不使用注释,因为那是 Spring 概念泄漏到您的课程中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-11
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 2019-05-03
相关资源
最近更新 更多