스프링 부트 YAML 예제
27177 단어 springspringboot
YAML 및 속성
logging:
level:
org.springframework: ERROR
com.example: DEBUG
spring:
profiles:
active: dev
main:
banner-mode: off
email: [email protected]
thread-pool: 10
wordpress:
menus:
- title: Home
name: Home
path: /
- title: About
name: About
path: /about
themes:
default-folder: /wp-content/themes/toptech
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=[email protected]
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/toptech
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
프로젝트 구조
프로젝트 종속성
Spring Boot는 SnakeYAML 라이브러리를 사용하여 YAML 파일을 구문 분석하고 SnakeYAML 라이브러리는 spring-boot-starter에서 제공합니다.
라이브러리 및 종속성은 pom.xml 파일에서 구성됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-boot-yaml-example</artifactId>
<packaging>jar</packaging>
<name>Spring Boot YAML Example</name>
<url>https://www.mkyong.com</url>
<version>1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
</plugin>
</plugins>
</build>
</project>
스프링 부트 + YAML
Spring Boot는 YAML 파일을 로드 및 구문 분석하고 다음 @ConfigurationProperties 클래스의 값을 바인딩합니다.
package com.example.yaml.config.model;
public class Menu {
private String name;
private String path;
private String title;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Override
public String toString() {
return "Menu{" +
"name='" + name + '\'' +
", path='" + path + '\'' +
", title='" + title + '\'' +
'}';
}
}
package com.example.yaml.config.model;
public class Server {
private String ip;
private String path;
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
@Override
public String toString() {
return "Server{" +
"ip='" + ip + '\'' +
", path='" + path + '\'' +
'}';
}
}
package com.example.yaml.config.model;
public class Theme {
private String defaultFolder;
public String getDefaultFolder() {
return defaultFolder;
}
public void setDefaultFolder(String defaultFolder) {
this.defaultFolder = defaultFolder;
}
@Override
public String toString() {
return "Theme{" +
"defaultFolder='" + defaultFolder + '\'' +
'}';
}
}
package com.example.yaml.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties
public class GlobalProperties {
private int threadPool;
private String email;
public int getThreadPool() {
return threadPool;
}
public void setThreadPool(int threadPool) {
this.threadPool = threadPool;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "GlobalProperties{" +
"threadPool=" + threadPool +
", email='" + email + '\'' +
'}';
}
}
setter(및 getter) 이름은 application.properties(또는 application.yml)의 속성 이름과 일치해야 합니다.
package com.example.yaml.config;
import com.example.yaml.config.model.Menu;
import com.example.yaml.config.model.Server;
import com.example.yaml.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 List<Menu> menus = new ArrayList<>();
private Theme themes;
private List<Server> servers = new ArrayList<>();
public List<Menu> getMenus() {
return menus;
}
public void setMenus(List<Menu> menus) {
this.menus = menus;
}
public Theme getThemes() {
return themes;
}
public void setThemes(Theme themes) {
this.themes = themes;
}
public List<Server> getServers() {
return servers;
}
public void setServers(List<Server> servers) {
this.servers = servers;
}
@Override
public String toString() {
return "WordpressProperties{" +
"menus=" + menus +
", themes=" + themes +
", servers=" + servers +
'}';
}
}
Spring은 자동으로 wordpress 접두어가 붙은 application.properties 또는 application.yml 내부에 배치된 속성을 찾아 WordPressProperties 클래스의 해당 속성에 주입합니다.
Spring Boot를 정상적으로 시작하고 값을 출력합니다.
데모
소스 코드
https://github.com/java-cake/spring-boot/tree/main/yaml
Reference
이 문제에 관하여(스프링 부트 YAML 예제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fullstackhacker/spring-boot-yaml-example-1kb2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)