application.yml проти application.properties для Spring Boot


76

В моєму проекті я зараз використовую application.ymlдля конфігурації. Spring Initializr згенерувати application.properties? Які плюси / мінуси у кожного з них?

Відповіді:


71

Ну, це просто різні формати даних. Хто приємніший і легший для читання? Це очевидно суб’єктивно. Ось корисна публікація в блозі.

Що стосується spring-bootконфігурації, зверніть увагу, що існує лише один задокументований недолік використання YAML. Відповідно до документації :

Файли YAML не можна завантажити за допомогою @PropertySourceанотації. Отже, якщо вам потрібно завантажити значення таким чином, вам потрібно використовувати файл властивостей.


1
Чи широко прийнятий формат конфігурації YAML у всьому світі SpringBoot? Коли ми підходимо до сторонньої бібліотеки, яка забезпечує лише конфігурацію формату властивостей, чи легко перетворити її у формат yaml самостійно?
Брюс Нд,

@BruceSun Здається, це не так прийнято, оскільки офіційна документація використовує його рідко, тут використовуються .properties, наприклад: docs.spring.io/spring-boot/docs/current/reference/html/ ... Але шаблон весняного завантажувального проекту моєї компанії має yml ...
masterxilo

4
Це не просто різні формати даних. YAML підтримує utf-8, application.properties не підтримує
Нурлан,

1
Ще одне питання на цю тему: Коли бібліотека вимагає від мене налаштування конфігурації для файлу application.yml, чи можу я припустити, що її можна завантажити, коли я просто встановив властивість у файлі application.properties? Якщо бути точним, це однаковий механізм для завантаження властивості для обох файлів?
Девід Фарінья,

4
також, що відбувається, коли моя база коду надає як, application.yamlтак і application.properties? чи можу я просто перенести речі, скажімо, .yamlу .properties(змінюючи формат за необхідності) і очікувати, що речі продовжуватимуть працювати так само?
Ерік Каплун,

28

Приємне запитання, я теж одразу переплутався з цим.

Доходить до того, що, наскільки я знаю, є деякі відмінності,

1.) .properties файл: Він зберігає дані у послідовному форматі. Файл .yml: Він зберігає дані в ієрархічному форматі.

2.) .properties файл: Він підтримує лише пару ключ-значення, в основному рядкові значення. Файл .yml: Він підтримує пару ключ-значення, а також значення типу map, list & skalar.

3.) .properties файл: Цей файл спеціально використовується для JAVA. Файл .yml: цей тип файлу використовується багатьма мовами, такими як JAVA, Python, ROR тощо.

4.) Якщо ви хочете обробляти кілька профілів, файл .properties: У цьому випадку вам потрібно керувати окремим файлом для кожного профілю. Файл .yml: У цьому типі файлу вам просто потрібно керувати одним файлом і розміщувати в ньому дані конфігурації конкретного профілю.

5.) Для проекту Spring файл .properties: @PropertySource анотація підтримує цей тип файлу. Файл .yml: анотація @PropertySource не може підтримувати цей тип файлу.

В даний час я просто знаю лише про це !!!


Хороша відповідь, лише зауваження щодо пункту №2 .properties file : може підтримувати пару ключ-значення, а також значення типу map, list & skalar. + пункт # 3 .properties file можна використовувати з будь-якою мовою
ahmednabil88

1

Помітною відмінністю є те, як властивості представлені в кожному файлі. Файли YAML можуть використовувати послідовні пробіли для позначення ієрархії, тоді як файл властивостей може використовувати = для позначення значень властивостей.

Для екс.

Списки представлені ієрархічно в YAML:

заголовки:

  - user-agent
  - x-wag-diagonalsize

Списки можуть бути представлені як вбудований список (розділений комами) у файлі властивостей:

заголовки = user-agent, x-wag-diagonalsize

Інша відмінність полягає в тому, що ми можемо додати кілька файлів конфігурації в один файл yaml.

Наприклад, ми можемо додати application.yaml (властивості програми) та bootstrap.yaml (властивості сервера) в один файл config.yaml

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.