我在应用程序的web.xml中定义了一个上下文参数,如下所示
<context-param>
<param-name>baseUrl</param-name>
<param-value>http://www.abc.com/</param-value>
</context-param>现在我想在我的控制器中使用baseUrl的值,那么我如何才能访问这个.....?
如果有人知道这件事,请告诉我。
提前感谢!
发布于 2014-10-06 22:58:33
如果你使用的是Spring 3.1+,你不需要做任何特殊的事情来获得这个属性。只需使用熟悉的${property.name}语法即可。
例如,如果您有:
<context-param>
<param-name>property.name</param-name>
<param-value>value</param-value>
</context-param>在web.xml或
<Parameter name="property.name" value="value" override="false"/>
在Tomcat的context.xml中
然后,您可以像这样访问它:
@Component
public class SomeBean {
@Value("${property.name}")
private String someValue;
}这之所以有效,是因为在Servlet中,在部署到3.1+环境时注册的环境是将所有servlet上下文相关属性添加到始终存在的Environment的StandardServletEnvironment。
发布于 2013-11-20 18:53:27
使您的控制器实现ServletContextAware接口。这将强制您实现一个setServletContext(ServletContext servletContext)方法,Spring将在其中注入ServletContext。然后,只需将ServletContext引用复制到私有类成员。
public class MyController implements ServletContextAware {
private ServletContext servletContext;
@Override
setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
}您可以使用以下命令获取param-value:
String urlValue = servletContext.getInitParameter("baseUrl");发布于 2014-01-17 08:43:30
首先,在您的Spring应用程序"applicationContext.xml“(或者您给它命名的其他名称:)中,添加一个属性占位符,如下所示:
<context:property-placeholder local-override="true" ignore-resource-not-found="true"/>如果您还想加载在.properties文件中找到的一些值,可以添加可选参数"location“。(例如location="WEB-INF/my.properties“)。
需要记住的一个重要属性是'local-override="true"‘属性,它告诉占位符,如果在加载的属性文件中找不到任何内容,就使用上下文参数。
然后,在构造函数和设置器中,您可以使用@Value注释和SpEL(Spring Expression Language)执行以下操作:
@Component
public class AllMine{
public AllMine(@Value("${stuff}") String stuff){
//Do stuff
}
}此方法具有从ServletContext中抽象出来的额外好处,并使您能够使用属性文件中的自定义值覆盖默认的上下文参数值。
希望这能有所帮助:)
https://stackoverflow.com/questions/20093759
复制相似问题