简介SpringBoot1:https://developer.aliyun.com/article/1521776
.yml配置文件
相较于.properties文件,.yml文件有如下优点:
- 写法简单,可读性高;
- 支持更多的数据类型;
- 跨语言使用:java/gaolang等等。
.yml的配置文件的语法与json字符串较为相似,例如:
#配置数据库信息 spring: datasource: url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8 username: root password: abc123 #用户自定义配置信息 coding: utf-8
冒号后必须要有一个空格否则非法。
在配置信息的值加单引号或不加引号时表示特殊含义的字符会按照普通字符处理,如果加了双引号就会按照原语义进行执行。
读取配置文件信息
在读取基本的属性时与.properties配置文件相似,也是使用@Value("${xx}")注解例如:
@Controller public class User { @Value("${coding}") public String coding; @PostConstruct public void getCoding(){ System.out.println("coding:"+coding); } }
在yml中也可以对对象进行配置与读取。
在yml配置对象时也可采用行内写法,例如配置User对象:
#配置对象 user: name: lisa sex: female age: 23 user2: { name: jake,sex: male,age: 22 }
在读取对象时使用@ConfigurationProperties(prefix = "xx") ,xx代表对象名,并且在类之前还要加上@Component注解,在创建该类时,一定不能省略getter和setter方法。
@ConfigurationProperties(prefix = "user2") @Component public class User { private String name; private String sex; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", sex='" + sex + '\'' + ", age=" + age + '}'; } }
在读取对象时,加上@AutoWired注解。
@Component public class UserController { @Autowired private User user; @PostConstruct public void getUser(){ System.out.println("User:"+user); } }
在yml中也可以对集合进行配置与读取。
#配置集合 person: name: - zhangsan - lisi - liuyang person2: { name: [zhagsan,lisi,wanwu]}
在进行读取时,与对象的读取类似,也需要添加 @ConfigurationProperties注解,然后在调用时使用@AutoWired注解,在创建实体类之前加上@Data注解,可省去定义getter、setter和toString方法。
@Data @Component @ConfigurationProperties("person") public class ListConfig { private List<String> name; }
@Controller public class ListController { @Autowired private ListConfig list; @PostConstruct public void getList(){ System.out.println(list.getName()); } }
运行结果:
四、SpringBoot中的日志文件
1、日志文件简介
所谓日志文件就是记录程序运行时的信息。
日志文件是程序的重要组成部分,利用日志文件可以发现和排除信息。
我们通常在启动SpringBoot项目时,SpringBoot的logo下面就是日志信息:
2、自定义日志打印
首先得到日志对象,使用LoggerFactory.getLogger(类名.class)来获取日志对象:
private static Logger logger = LoggerFactory.getLogger(LoggerTest.class);
使用日志对象提供的方法进行日志打印:
1.public void printLog(){ logger.trace("i am trace"); logger.debug("i am debug"); logger.info("i am info"); logger.warn("i am warn"); logger.error("i am error"); }
在打印日志的时候并没有将我们要输出的所有日志都进行打印,没出输出trace和debug的信息,这就与日志的级别有关系了,只能输出比当前日志级别高的日志信息,项目默认的日志级别为info。
3、日志级别
日志文件有如下的六种级别(日志级别逐渐递增):
- trace:少许的日志。
- debug:调试日志。
- info:普通信息的日志。
- warn:警告日志。
- error:错误日志。
- fatal:致命的日志,该类型的日志文件是系统进行输出,不能自定义打印。
项目中默认的日志级别是info,也可以在配置文件中对输出的日志级别进行修改:
设置全局的日志级别:
#设置全局的日志级别: logging.level.root=warn
再次启动项目:
随着日志级别增加,打印的日志信息就会减少。
也可以设置局部的日志级别:
#设置局部的日志级别: logging.level.com.example.demo.log=trace
由于局部日志级别设置为最低的trace, 上文自定义日志文件此时就可以打印全部的日志信息。
4、日志保存
日志的信息也可以持久化存储到磁盘上:
在配置文件中设置日志的保存路径:
#设置日志文件的保存路径 logging.file.path=D:/spring/
当再次启动项目之后就可以在磁盘的指定路径下找到日志文件:
如下为日志文件的内容:
在配置文件中设置日志的保存的文件名:
logging.file.name=D:/spring/log
项目的日志文件信息也会保存到指定文件中。
日志文件中的信息时追加输入的,当日志文件超过10kb的时候,就会自动再生成一个文件例如log1、log2依次类推。
5、自定义日志文件的更简单实现
首先需要添加lombok到当前项目:
先需要安装一个EditStarters插件:
然后再pom.xml文件右击generate将Lombok的依赖添加进来
完成上述操作后只需要在实现类之前添加@Slf4j注解就可以直接使用log对象,不用再进行获取,例如:
public void printLog(){ log.trace("i am trace"); log.debug("i am debug"); log.info("i am info"); log.warn("i am warn"); log.error("i am error"); }
lombok能直接使用log对象原因在于他已经在target目录下的字节码文件中获取了log对象。