首先写两个实体类:
Writer类:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "writer")
public class Writer {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Writer{" +
"name='" + name + '\'' +
'}';
}
}
Book类:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
@Component
@ConfigurationProperties(prefix = "book")
public class Book {
private String name;
private String[] tags;
private List<Writer> writer;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String[] getTags() {
return tags;
}
public void setTags(String[] tags) {
this.tags = tags;
}
public List<Writer> getWriter() {
return writer;
}
public void setWriter(List<Writer> writer) {
this.writer = writer;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", tags=" + Arrays.toString(tags) +
", writer=" + writer +
'}';
}
}
YAML配置文件:
book:
name: 三国演义 #字符串
tags: #字符串数组
- 四大名著
- 经典
- 古典文学
writer: #对象数组
- name: 罗贯中
- name: 施耐庵
编写测试类:
import com.example.domain.Book;
import com.example.domain.Writer;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class DemoApplicationTests {
@Autowired
Book book;
@Autowired
Writer writer;
@Test
public void contextLoads() {
System.out.println("book = "+book);
}
}
打印结果:
book = Book{name='三国演义', tags=[四大名著, 经典, 古典文学], writer=[Writer{name='罗贯中'}, Writer{name='施耐庵'}]}
注意:
Book实体类中的private List<Writer> writer;
集合的变量命名要和yaml文件一致。
如下图所示:
如果不一致,比如:把yaml文件中的writers改成writer
,此时打印结果:
book = Book{name='三国演义', tags=[四大名著, 经典, 古典文学], writers=null}
Profile问题
我们通过设置配置文化来配置开发环境、生产、测试环境的配置,分别设置不同的配置提高开发效率,将公共的部分提取出来放在总配置中:
application.yml配置:
spring:
profiles:
active: prod #dev开发环境 prod生产环境 test测试环境
server:
port: 8080