Автор оригинала: mkyong.
В этой статье мы покажем вам, как использовать YAML вместо файла свойств в весенней загрузке.
Протестировано с:
- Пружинный ботинок 2.1.2.ВЫПУСК
- Мавен 3
- Змеиный ям:банка:1.23
Короче говоря, создайте application.yml в папке src/resources , загрузится и проанализируется Spring Boot .yml файл автоматически и привязывает значения к классам, которые помечены @ConfigurationProperties
P.S Файлы YAML не могут быть загружены с помощью “@PropertySource”
1. YAML и свойства
logging:
level:
org.springframework: ERROR
com.mkyong: DEBUG
spring:
profiles:
active: dev
main:
banner-mode: off
email: yaml@mkyong.com
thread-pool: 10
wordpress:
menus:
- title: Home
name: Home
path: /
- title: About
name: About
path: /about
themes:
default-folder: /wp-content/themes/mkyong
servers:
- ip: 127.0.0.1
path: /dev1
- ip: 127.0.0.2
path: /dev2
- ip: 127.0.0.3
path: /dev3
# Spring Boot logging.level.org.springframework=ERROR logging.level.com.mkyong=DEBUG spring.profiles.active=dev spring.main.banner-mode=off # Global email=properties@mkyong.com thread-pool=10 # WordPress wordpress.menus[0].title=Home wordpress.menus[0].name=Home wordpress.menus[0].path=/ wordpress.menus[1].title=About wordpress.menus[1].name=About wordpress.menus[1].path=/about wordpress.themes.default-folder=/wp-content/themes/mkyong wordpress.servers[0].ip=127.0.0.1 wordpress.servers[0].path=/dev1 wordpress.servers[1].ip=127.0.0.2 wordpress.servers[1].path=/dev2 wordpress.servers[2].ip=127.0.0.3 wordpress.servers[2].path=/dev3
2. Структура проекта
3. Зависимость от проекта
Spring Boot использует библиотеку SnakeYaml для анализа файла YAML, а библиотека SnakeYaml предоставляется spring-boot-starter
4.0.0 spring-boot-yaml-example jar Spring Boot YAML Example https://www.mkyong.com 1.0 org.springframework.boot spring-boot-starter-parent 2.1.2.RELEASE 1.8 org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-maven-plugin org.apache.maven.plugins maven-surefire-plugin 2.22.0
Зависимости проекта:
+- org.springframework.boot:spring-boot-starter:jar:2.1.2.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot:jar:2.1.2.RELEASE:compile [INFO] | | \- org.springframework:spring-context:jar:5.1.4.RELEASE:compile [INFO] | | +- org.springframework:spring-aop:jar:5.1.4.RELEASE:compile [INFO] | | +- org.springframework:spring-beans:jar:5.1.4.RELEASE:compile [INFO] | | \- org.springframework:spring-expression:jar:5.1.4.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-autoconfigure:jar:2.1.2.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter-logging:jar:2.1.2.RELEASE:compile [INFO] | | +- ch.qos.logback:logback-classic:jar:1.2.3:compile [INFO] | | | \- ch.qos.logback:logback-core:jar:1.2.3:compile [INFO] | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.1:compile [INFO] | | | \- org.apache.logging.log4j:log4j-api:jar:2.11.1:compile [INFO] | | \- org.slf4j:jul-to-slf4j:jar:1.7.25:compile [INFO] | +- javax.annotation:javax.annotation-api:jar:1.3.2:compile [INFO] | +- org.springframework:spring-core:jar:5.1.4.RELEASE:compile [INFO] | | \- org.springframework:spring-jcl:jar:5.1.4.RELEASE:compile [INFO] | \- org.yaml:snakeyaml:jar:1.23:runtime <<------------- SnakeYAML
4. Пружинный ботинок + YAML
4.1 Spring Boot загрузит и проанализирует файл YAML и свяжет значения в следующих классах @ConfigurationProperties .
package com.mkyong.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties // no prefix, root level.
public class GlobalProperties {
//thread-pool , relax binding
private int threadPool;
private String email;
//... getters and setters, toString()
}
package com.mkyong.config;
import com.mkyong.config.model.Menu;
import com.mkyong.config.model.Server;
import com.mkyong.config.model.Theme;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
@ConfigurationProperties("wordpress")
public class WordPressProperties {
private List4.2 Модель, ничего особенного, просто несколько стандартных классов.
package com.mkyong.config.model;
public class Menu {
private String name;
private String path;
private String title;
//... getters and setters, toString()
}
package com.mkyong.config.model;
public class Server {
private String ip;
private String path;
//... getters and setters, toString()
}
package com.mkyong.config.model;
public class Theme {
private String defaultFolder;
//... getters and setters, toString()
}
4.3 Запустите обычную загрузку с пружиной и распечатайте значения.
package com.mkyong;
import com.mkyong.config.GlobalProperties;
import com.mkyong.config.WordpressProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired
private WordPressProperties wpProperties;
@Autowired
private GlobalProperties globalProperties;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... args) {
System.out.println(globalProperties);
System.out.println(wpProperties);
}
}
5. ДЕМОНСТРАЦИЯ
Упакуйте и запустите его.
# run spring boot directly $ mvn spring-boot:run # or package and run it $ mvn package $ java -jar target/spring-boot-yaml-example-1.0.jar
Выход
GlobalProperties{
threadPool=10,
email='properties@mkyong.com'
}
WordpressProperties{
menus=[
Menu{name='Home', path='/', title='Home'},
Menu{name='About', path='/about', title='About'}
],
themes=Theme{defaultFolder='/wp-content/themes/mkyong'},
servers=[
Server{ip='127.0.0.1', path='/dev1'},
Server{ip='127.0.0.2', path='/dev2'},
Server{ip='127.0.0.3', path='/dev3'}
]
}
Скачать Исходный Код
Рекомендации
- ЯМЛ
- Википедия – YAML
- Змеиный ям
- Использование YAML вместо свойств
- Пример свойств Spring Boot @ConfigurationProperties
Оригинал: “https://mkyong.com/spring-boot/spring-boot-yaml-example/”