无法从Spring Boot Controller获取web.xml中的context-param

时间:2017-02-15 12:28:05

标签: java xml spring spring-mvc servlets

我有一个使用Spring Boot web的简单webapp 我有一个web.xml文件 src/main/webapp/WEB-INF包含像这样的上下文参数

<context-param>
    <description>Directory containing the configuration files</description>
    <param-name>confDir</param-name>
    <param-value>/opt/rasdaman/etc/</param-value>
</context-param>

在Servlet Controller中,我可以获得Servlet上下文

@Autowired
private ServletContext servletContext;  

但是当我试图获取参数时,它返回null

servletContext.getInitParameter("confDir");

当我试图获得servletContext的真实路径时

servletContext.getRealPath(File.separator);

它返回

 "..../src/main/webapp/"

如何在web.xml中获取配置变量?

由于

2 个答案:

答案 0 :(得分:1)

我自己没试过,但是。如果你使Controller实现ServletContextAware,我认为你可以从http://docs.spring.io/spring/docs/3.0.x/javadoc-api/org/springframework/web/context/ServletContextAware.html获得你的上下文参数

这个想法将是

public class MyCoolController implements ServletContextAware {


    @Override
    setServletContext(ServletContext servletContext) {
        String confDir = servletContext.getInitParameter("confDir");
    }
}

试一试

答案 1 :(得分:0)

感谢sudakatux问题是我使用了部署Spring Boot而jar没有战争然后无法从web.xml读取

跟随here更改为war并通常使用tomcat EE进行部署