Spring boot 配置
1、YAML
1.1 YAML语法
- k: v 表示键值对,键冒号后面必须空格
- 使用空格缩进代表层级关系,缩进时使用空格不能用Tab键
- 使用驼峰命名法
- 大小写敏感
- #表示注释
1.2 使用实例
首先建一个Person类和Dog类
package com.zhou.springboot.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class Dog {
private String name;
private Integer age;
}
package com.zhou.springboot.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Data // lombok提供的属性的get、set方法
@ToString //lombok提供的tostring 可以把整个对象的属性和值拼接输出
@AllArgsConstructor //全参构造函数
@NoArgsConstructor //无参构造函数
@ConfigurationProperties(prefix = "person") //对应yaml中的属性 person
@Component //注册到bean
public class Person {
private String userName;
private boolean isOK;
private Date birth;
private Integer age;
private Dog dog;
private String[] interests;
private List<String> animal;
private Map<String,Object> score;
private Set<Double> set;
//通过@Value也可以给属性注入值,下面两个是yaml中没有的,通过@Value(“想要给的值”)赋值
//@Value 是 org.springframework.beans.factory.annotation.Value,
@Value("zhangsan")
private String name;
@Value("11")
private Integer age1;
}
建一个application.yaml
person:
#String
userName: zhangsan
#boolean
isOk: true
#Date
birth: 2022/01/20
#Integer
age: 21
#对象可以用下面两种写法
#dog: {name: 汪汪, age: 1}
dog:
name: 汪汪
age: 1
#String[] 可以用下面两种写法
#interests: [football, basketball]
interests:
- football
- basketball
#List<String> 可以用下面两种写法
#animal: [cat, dog]
animal:
- cat
- dog
#Map<String,Object> 可以用下面两种写法
#score: {chinese: 100, math: 100}
score:
chinese: 100
math: 100
#Set<Double> 可以用下面两种写法
#set: [1.1, 1.0]
set:
- 1.1
- 1.0
在控制器里面建一个person方法给前台调用
package com.zhou.springboot.controller;
import com.zhou.springboot.entity.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
public class HelloController {
@Autowired
Person person;
@GetMapping("/hello")
public String hello(){
return "hello spring boot";
}
@GetMapping("/person")
public Person person(){
return person;
}
}
前端调用的返回结果
2、切换配置文件
在开发中配置文件中的内容会发生变化,比如:开发中用到的端口是8080、测试用的8081、生产环境中用的8082,还有数据库、redis等地址也会发生改变,如果每次改同一个配置文件,配置项还这么多可能还会改错,如何以最少的修改来满足我们的要求呢?下面就来说一说
2.1 通过配置文件实现
先添加三个配置文件:application.yaml,application-dev.yaml,application-test.yaml,为了直观的看到效果,直接改tomcat的端口
注意:定义名字的时候一定是这种格式:application-进行切换的类型.yaml
application-dev.yaml
server:
port: 8081
application-test.yaml
server:
port: 8082
application.yaml,下面的dev代表的是使用application-dev.yaml
spring:
profiles:
active: dev
下面我们看到日志中输出的端口是8081,和我们预期结果一样
application.yaml,下面的test代表的是使用application-test.yaml
spring:
profiles:
active: test
下面我们看到日志中输出的端口是8082,和我们预期结果一样
通过上面的例子可以看出,不管以后有几种环境的配置,都只需要在application.yaml中改一个地方就行了
3、自定义banner
Spring boot每个版本不同输出的样式也不太一致,下面是现在用的版本输出的样式
自定义样式其实挺简单的,在线生成一个或自己编辑一个
下面推荐两个网站,各位可以根据自己的喜好选择
http://patorjk.com/software/taag/#p=display&f=Isometric1&t=Test
https://www.bootschool.net/ascii
下面就是我在线生成的一个,文件名是banner.txt,路径在resources下,然后启动就会在日志中打出来