Аргументы командной строки Spring load из контекста приложения xml - PullRequest
0 голосов
/ 20 марта 2019

Как я могу использовать varargs из контекста приложения Spring xml?

java -jar my.jar --variable=value

application-context.xml

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

Ответы [ 2 ]

3 голосов
/ 20 марта 2019

Попробуйте использовать Системные свойства:

java -Dvariable=value -jar my.jar

Это либо работает из коробки, либо вам нужно указать контексту приложения, чтобы он смотрел на свойства системы, когда она расширяет переменные.Прошло много времени с тех пор, как я попробовал это.

Хорошая отправная точка - PropertySourcesPlaceholderConfigurer.

1 голос
/ 20 марта 2019

Когда вы делаете что-то подобное в вашей конфигурации XML для XML

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

Spring использует PropertyPlaceholderConfigurer для поиска этих переменных в переменных System / enviroment и / или списке предопределенных файлов свойств.

Таким образом, самый простой способ - передать это значение как системную переменную или переменную окружения с помощью -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
}
...