Как установить свойства из аргументов командной строки в автономном приложении Camel Spring - PullRequest
0 голосов
/ 06 марта 2020

У меня есть автономное приложение Camel Spring:

public static void main(final String[] args) throws Exception{
    Main main = new Main();
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("camel-context.xml");
    main.setApplicationContext(context);
    main.run();
} 

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

public class MyRouteBuilder extends SpringRouteBuilder {

    @Autowired
    private Environment environment;

    @Override
    public void configure() {
        Map<String, String> loadedValues = getValuesFromProperties( envrionment );

        // route definition
    }
}

Как получить эти свойства для использования в методе настройки? Я не знаю, какие имена свойств или значения перед запуском приложения. У меня будет тысячи возможных свойств.

Я пытался получить их с помощью CommandLinePropertySource, но значения устанавливаются после вызова метода config ():

    CommandLinePropertySource clps = new SimpleCommandLinePropertySource(args);
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("camel-context.xml");
    context.getEnvironment().getPropertySources().addFirst(clps);
    main.setApplicationContext(context);

Я также попытался создать контекст, добавить свойства и затем создать контекст с моим файлом camel-context. xml, но это тоже не сработало.

Какие есть варианты загрузки свойств из аргументов командной строки в мое приложение?

1 Ответ

0 голосов
/ 12 марта 2020

Вы пытались сделать refre sh после добавления источника свойства?

context.getEnvironment().getPropertySources().addFirst(clps);
context.refresh();
...