Начало работы с Spring Boot (2): получение значения файла конфигурации

Spring Boot

В этом блоге в основном объясняется, как получить значение файла конфигурации в Spring Boot.

1. Используйте файл конфигурации yaml

Файл конфигурации, сгенерированный Spring Boot по умолчанию, — это application.properties, но он также поддерживает файлы конфигурации на языке yaml.

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

Мы предполагаем, что исходная конфигурация application.properties такова:

spring.main.banner-mode=off

Итак, как переключить файл конфигурации на application.yml?

Сначала удалите исходный файл конфигурации application.properties и добавьте новый файл конфигурации application.yml.Новый метод выглядит следующим образом:

Затем измените application.yml на:

spring:
  main:
    banner-mode: "off"

Текущий результат такой же, как и при первоначальном использовании файла конфигурации свойств.

2. Используйте аннотацию @Value, чтобы получить значение файла конфигурации.

Сначала добавьте следующую конфигурацию в application.yml:

book:
  author: wangyunfei
  name: spring boot

Затем измените код класса запуска на:

package com.zwwhnly.springbootaction;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class SpringbootActionApplication {
    @Value("${book.name}")
    private String bookName;

    @Value("${book.author}")
    private String bookAuthor;

    @RequestMapping("/")
    public String index() {
        return "book name is:" + bookName + " and book author is:" + bookAuthor;
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringbootActionApplication.class, args);
    }
}

Запустите проект, введите в браузере http://localhost:8080/, вы увидите следующую информацию:

Этот метод такой же, как и в проекте Spring.Для получения более подробной информации вы можете проверить блог, который я резюмировал ранее:

Начало работы с Spring (9): внедрение значений во время выполнения.

3. Используйте аннотацию @ConfigurationProperties, чтобы получить значение файла конфигурации.

Spring Boot также предоставляет@ConfigurationPropertiesАннотация для получения значения файла конфигурации. Этот метод может автоматически связать значение файла конфигурации с bean-компонентом, что более удобно и безопасно для типов.Рекомендуется использовать этот способ.

Сначала добавьте следующую конфигурацию в application.yml:

author:
  name: wangyunfei
  age: 32

Затем создайте новый класс AuthorSettings, добавьте@Componentаннотации и@ConfigurationPropertiesаннотация:

package com.zwwhnly.springbootaction;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "author")
public class AuthorSettings {
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

Дело в том, что@ConfigurationPropertiesAnnotation, его атрибут префикса используется для указания префикса конфигурации, такого как автор в этом примере.

Затем измените код класса запуска на:

package com.zwwhnly.springbootaction;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class SpringbootActionApplication {
    @Autowired
    private AuthorSettings authorSettings;

    @RequestMapping("/")
    public String index() {
        return "author name is " + authorSettings.getName() + " and author age is " + authorSettings.getAge();
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringbootActionApplication.class, args);
    }
}

Запустите проект, введите в браузере http://localhost:8080/, вы увидите следующую информацию:

4. Используйте профиль для управления конфигурацией в нескольких средах.

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

Фактически, в Spring Boot мы можем использовать Profile для его реализации.Далее мы объясним конкретный метод реализации.

Сначала создайте два новых файла конфигурации: application-dev.yml, application-prod.yml.

Структура проекта на данный момент показана на следующем рисунке:

Если некоторые учащиеся предпочитают использовать файл свойств, они могут создать новый, как показано на следующем рисунке:

По умолчанию номер порта запуска — 8080. Если мы хотим использовать номер порта 8082 в среде разработки и номер порта 8083 в среде производства, мы можем изменить файл конфигурации следующим образом:

В application-dev.yml добавляется следующая конфигурация:

server:
  port: 8082

В application-prod.yml добавляется следующая конфигурация:

server:
  port: 8083

Запустите проект, как показано ниже:

Мы обнаружим, что номер порта по умолчанию 8080 все еще используется, так как же указать порт, который использует среду dev или prod?

Нам нужно добавить следующую конфигурацию в application.yml:

spring:
  profiles:
    active: dev

На этом этапе, когда вы снова запустите проект, вы обнаружите, что используется номер порта 8082, который настроен в файле application-dev.yml.

Если вы хотите использовать среду prod, вы можете изменить конфигурацию следующим образом:

spring:
  profiles:
    active: prod

Текущий результат:

Что касается использования профиля в проектах Spring, вы можете просмотреть мой предыдущий обзор блога:Введение в Spring (7): объяснение использования Spring Profile.

5. Исходный код и ссылка

Адрес источника:GitHub.com/Где находится Ухань/SPR…, добро пожаловать на скачивание.

Ван Юньфэй, «Разрушитель разработки Java EE: Spring Boot в действии»

SpringBoot — использование и переключение нескольких профилей

Как IDEA создает файлы .properties