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概念泄漏到您的类中。