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

时间:2013-01-28 21:12:09

标签: java spring

我有一个需要使用不同端口号运行两次的应用程序,有没有办法可以将端口号作为命令行参数传递并在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 个答案:

答案 0 :(得分:19)

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

 <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

答案 1 :(得分:2)

如果您在使用静态变量时没有任何问题,那么您可以使用它。

 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>