2016-04-22 2 views
0

У меня, вероятно, отсутствует что-то очевидное, но я пытаюсь выяснить, как настроить/переопределить свойства Spring Spring Spring при программировании при запуске приложения.Как передать дополнительные параметры Spring Spring Application Application Programatically?

По умолчанию я знаю, что могу передать аргументы командной строки загрузочному приложению, но я хочу вставить приложение загрузки весны в другое приложение java и выполнить из родительского приложения. Я включил его в зависимость от моего проекта.

В моей Spring загрузки приложения У меня есть следующие:

static public main(String [] args){ 
    SpringApplication app = new SpringApplication(Sync.class); 
    app.setWebEnvironment(false); 
    app.setShowBanner(false); 
    app.run(args); 
} 

Это позволяет мне установить аргументы командной строки, такие как --userName=Eric и т.д.

Хотя я понимаю, что технически может сделать то же самое программно и добавьте --userName=Eric в мой массив args [] в коде, я подумал, что должен быть еще один очиститель/неоперативный способ передать аргумент/свойство моему app. Но я не могу найти какой-либо другой метод в SpringApplication, который позволяет мне установить этот тип значения.

Я искал что-то, что позволит мне сделать что-то вроде следующего:

app.setProperty("username", "Eric"); 

Я пропускаю что-то очевидное?

+1

Любые причины, по которым вы не хотите устанавливать его в application.properties, если вы хотите его жестко запрограммировать? –

+0

Я немного упростил вариант использования, но параметры настраиваются в вызывающем приложении, поэтому жесткое кодирование файла application.properties - это не то, что я хотел бы сделать. –

ответ

4

Когда вам нужно больше контролировать создаваемое приложение, вы можете использовать SpringApplicationBuilder и, в данном случае, его метод properties. Например:

new SpringApplicationBuilder(Application.class) 
      .properties("foo=bar").run(args); 

Есть также варианты, которые принимают Properties и Map.

1

я не найти способ изменить аргументы приложения, кроме того, что вы предлагали, но я бы постулировать ваш случай использования соответствует внешней конфигурации:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

Если вы знаете, значения, которые вы нужно заранее, я думаю, файл application.config - это то место, где они должны жить. Затем вы можете получить к ним доступ через аннотации @Value и т. Д.

+0

Вот и все. Я не знаю их случаев раньше времени. Вызывающее приложение указывает параметры. Я просто пытаюсь переместить параметр из командной строки в вызов выполнения. –

Смежные вопросы