从xml应用程序上下文中弹簧加载命令行参数

时间:2019-03-20 13:27:44

标签: java xml spring applicationcontext

如何从Spring应用程序上下文xml使用varargs?

java -jar my.jar --variable=value

application-context.xml

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

2 个答案:

答案 0 :(得分:3)

尝试使用系统属性:

java -Dvariable=value -jar my.jar

这可以立即使用,或者您需要告诉应用程序上下文在扩展变量时查看系统属性。自从我尝试过已经有一段时间了。

一个好的起点是PropertySourcesPlaceholderConfigurer

答案 1 :(得分:1)

当您在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
}