Java: использование системных параметров по сравнению с «обычными» параметрами командной строки

Предположим, что приложение Java принимает целочисленный аргумент командной строки, скажем бубу .

Предполагая, что кто-то использует приличный синтаксический анализатор командной строки (и я использую - https://github.com/jopt-simple/jopt-simple ), а также помня о переключателе -D java, это некоторые из типичных способов передачи этого параметра командной строки:

  1. - bubu 5 (или - bubu = 5 или - bubu5 )
  2. - Dbubu = 5

Где первый аргумент программы и должен обрабатываться приложением с помощью парсера командной строки, тогда как второй аргумент виртуальной машины уже проанализирован java, что делает его доступным как Integer. getInteger ("bubu")

Я немного озадачен. Что мне использовать? Использование системного свойства:

  • кажется ничего не стоит
  • не зависит от какой-либо библиотеки синтаксического анализатора командной строки
  • предоставляет удобный (хотя и неожиданный) API для получения значений

Насколько я могу видеть, Единственный минус в том, что все параметры командной строки должны использовать флаг -D .

Пожалуйста, совет.

Спасибо.

РЕДАКТИРОВАТЬ

Еще один плюс системных параметров - «их можно использовать, даже если приложение не является автономным, начиная с основного, но и когда приложение является веб-приложением или модульным тестом». - спасибо https: // stackoverflow.com / users / 571407 / jb-nizet

EDIT2

Позвольте мне сосредоточиться на этом подробнее. Есть ли какие-то серьезные причины (помимо эстетики) не использовать параметры системы, как всегда?

EDIT3

Хорошо, я думаю, что теперь понял. Если мой код, вероятно, будет загружен веб-приложением, тогда возникает проблема потенциального конфликта имен, поскольку другие веб-приложения, размещенные в том же веб-контейнере, совместно используют пространство системных свойств с моим кодом.

Следовательно, я должен быть осторожным и заранее определить свойства моей системы. Итак, не больше бубу , теперь это com.shunra.myapp.bubu . Это означает, что вместо простого

-Dbubu=5

у меня есть

-Dcom.shunra.myapp.bubu=5

, который становится менее привлекательным для простого приложения командной строки.

Другая причина была дана Марком Петерсом , что мне очень понравилось.

21
задан Manuel Jordan 15 November 2019 в 23:34
поделиться