目前我有一个简单的战争,它拥有一些弹簧集成配置,并且使用此代码将此战争部署到一个Jetty容器中:
protected void createWac(File file, ConnectorConfig config) throws Exception, InterruptedException {
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
webapp.setWar(file.getAbsolutePath());
startServer(webapp, inboundConnector.getPort());
}
在Spring Integration配置中,我有一个像这样的int-http:inbound-gateway
<!-- External listener definition -->
<int-http:inbound-gateway id="entryHttpInboundGateway"
request-channel="myRequestChannel"
path="myPath"
reply-channel="myReplyChannel"
request-payload-type="com.me.MyType"
supported-methods="POST" message-converters="converters"
reply-timeout="1000">
</int-http:inbound-gateway>
我的目标是动态设置myPath和supported-methods值的值,我采用的第一种方法是在我的xml文件中包含变量,正如有些人在这篇文章中建议的那样:how to read System environment variable in Spring applicationContext
为此我尝试使用此配置
<!-- External listener definition -->
<int-http:inbound-gateway id="entryHttpInboundGateway"
request-channel="myRequestChannel"
path="#{ systemProperties['HTTP_PATH'] }"
reply-channel="myReplyChannel"
request-payload-type="com.me.MyType"
supported-methods="POST" message-converters="converters"
reply-timeout="1000">
</int-http:inbound-gateway>
并在我的机器上设置env,奇怪的是当我设置它时,没有任何反应,也没有配置错误,通道的初始化或找不到的属性,我知道,因为如果我删除了#签名,或者把实际的网址放在控制台上:
IntegrationRequestMappingHandlerMapping - Mapped "{[/{ systemProperties['HTTP_PATH'] }],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public abstract void org.springframework.web.HttpRequestHandler.handleRequest(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws javax.servlet.ServletException,java.io.IOException
关于如何解决这个问题的任何想法,或者在将值放入jetty容器之前能够将值注入war的上下文文件的其他方法?
答案 0 :(得分:1)
你必须看看春天的Environment Abstraction
:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-environment
考虑一下PropertySourcesPlaceholderConfigurer
面向你的应用程序的一些问题,看起来就像ServletConfig
的情况一样:
对于常见的StandardServletEnvironment,完整层次结构如下所示,顶部的最高优先级条目:* ServletConfig参数(如果适用,例如在DispatcherServlet上下文的情况下)* ServletContext参数(web.xml context-param)条目)* JNDI环境变量(&#34; java:comp / env /&#34;条目)* JVM系统属性(&#34; -D&#34;命令行参数)* JVM系统环境(操作系统环境)变量)
从另一方面考虑迁移到Spring Boot。