Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 25865|Відповідь: 0

[Джерело] Spring Boot зчитує (application.yml) значення файлу конфігурації

[Копіювати посилання]
Опубліковано 07.01.2019 15:37:14 | | | |
Перший application.yml профіль конфігурації виглядає так:



Проєкт Maven pom.xml додавання пакетів:




Створіть новий відображений об'єкт із наступним кодом:

Тип рядка повинен мати встановлювача для отримання значень властивості; карти, колекції та масиви не потрібні

Використовуйте @Autowired анотації для автоматичної ін'єкції, як показано на наступному зображенні:



esConfig завжди видає null, довго шукав рішення, але не вдалося, нижче буде рішення.

Створимо новий контролер, код виглядає так:

Ін'єкція проходить успішно, і значення файлу конфігурації yml отримуються нормально, наступним чином:



Причини, через які EsClient не може бути успішно впроваджений, такі:

Викликаємо функцію цього класу в конструкторі, і змінна @Autowired цього класу використовується в цій функції.

Тож я подумав, що щось може піти не так. Тому що @Autowired потрібно чекати, поки клас буде побудований, перш ніж його можна буде встановити з зовнішніх посилань. Тому час введення @Autowired має бути пізніше за час виконання конструктора.
Рішення:

Spring Team рекомендує: «Завжди використовуйте конструкторську ін'єкцію залежностей у зернах. Завжди використовуйте твердження для обов'язкових залежностей».

Переклад:

Весна радить: «Завжди встановлюйте ін'єкцію залежності з конструкторами у вашому зеренні. завжди використовуйте твердження для примусу до залежностей».


Оригінальний текст:

Змінений текст:



PS: Порядок ініціалізації змінних Java такий: статичні змінні або статичні блоки операторів — > змінні екземпляра або блоки ініціалізації операторів — >метод побудови — >@Autowired

То навіщо додавати фінальний тип до змінної члена?

В Інтернеті є таке пояснення: Область дії стандартного зерна у конфігурації пружини — singleton, яка завжди залишається після запуску. Оголосіть об'єкт зерна динамічно створеним, встановивши властивість scope як прототип. Однак, якщо ваш сервіс є одиночним, ін'єкція виконується лише один раз.

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

Це може бути зроблено для запобігання повторному виконанню конструктора під час роботи програми;

Або, можливо, це легше зрозуміти, плюс фінальний тест ініціалізується лише один раз, коли програма починається.






Попередній:Spring Boot+maven для швидкого створення проєктів
Наступний:Випущена китайська інтернет-меморабілія 2018 року
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com