【问题标题】:Spring load command line arguments from xml application context从 xml 应用程序上下文 Spring 加载命令行参数
【发布时间】:2019-08-11 05:03:53
【问题描述】:

如何使用 Spring 应用程序上下文 xml 中的可变参数?

java -jar my.jar --variable=value

application-context.xml

<bean id="fooClassInstance" class="my.package.FooClass">
    <property name="myproperty" value="${variable}" />
</bean>

【问题讨论】:

  • 您已经编写了自己的main() 方法并在那里创建了App Context?所以你可以访问main()String[] args 参数?您的问题实际上是“如何将任意字符串值传递到应用程序上下文中”?

标签: java xml spring applicationcontext


【解决方案1】:

尝试使用系统属性:

java -Dvariable=value -jar my.jar

这要么开箱即用,要么您需要告诉应用上下文在扩展变量时查看系统属性。我已经有一段时间没有尝试过了。

一个好的起点是PropertySourcesPlaceholderConfigurer

【讨论】:

  • 但是如果我想使用参数传递的变量呢?
  • 您已经编写了自己的main() 方法并在那里创建了App Context?所以你可以访问main()String[] args参数?
【解决方案2】:

当您在 Spring XML 配置中执行类似操作时

<bean id="fooClassInstance" class="my.package.FooClass">
    <property name="myproperty" value="${variable}" />
</bean>

Spring 使用PropertyPlaceholderConfigurer 在系统/环境变量和/或预定义属性文件列表中搜索这些变量。

所以最简单的方法是将该值作为系统或环境变量传递给-Dvariable=value

如果您想将这些值作为参数传递给min,您仍然可以进行类似的修改

public static void main(String[] args) {
    // parse arguments into key, value pairs
    System.setProperty(<key>, <value>);
    ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(<your XML config file>);
    // use Spring context to get beans
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    相关资源
    最近更新 更多