使用命令行参数将值注入Spring

9
我有一个应用程序需要使用不同的端口号运行两次,有没有一种方法可以将端口号作为命令行参数传递,并在spring上下文文件中检索它们。
 <bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL">
       <value>vm://localhost:${<i>port number goes here</i>}</value>
    </property>
</bean>
2个回答

19

如果已经将其作为一个系统属性传递,您可以这样做。在JVM命令中添加-Dport.number = 8080(或您想要的任何端口),然后将属性值更改为:

 <bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL">
           <value>vm://localhost:${port.number}/value>
        </property>
 </bean>

即。

java -Dport.number=8080 com.package.MyMain

我应该将参数传递为 java MyClass 63456 - Coding Ninja
4
在加载Spring上下文之前,您的主类可以将该参数作为系统属性添加。使用System.setProperty("port.name", args[0]);。 - Mike Pone

1
如果您不介意使用静态变量,那么这就是您可以使用的方法。
 public class MyClass{
  public static String[] ARGS;
  public static void main(String[] args) {
        ARGS = args;
   }
}


<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>#{'vm://localhost:'+argsportnumber}</value>
</property>
</bean>


1
抱歉,您还需要将此标签添加到您的Spring文件中:<util:constant id="argsportnumber" static-field="com.sabre.SCommunicator.Startup.ARGS"/>。 - Jagadeesh Venkata

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接