简介SpringBoot2

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 简介SpringBoot

简介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对象。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2天前
|
NoSQL Java 关系型数据库
非关系型数据库NoSQL数据层解决方案 之 Mongodb 简介 下载安装 springboot整合与读写操作
非关系型数据库NoSQL数据层解决方案 之 Mongodb 简介 下载安装 springboot整合与读写操作
6 0
|
29天前
|
XML Java 数据库
简介SpringBoot1
简介SpringBoot
25 1
|
10月前
|
前端开发 JavaScript Java
Swagger简介以及SpringBoot整合Swagger(通俗易懂)
Swagger简介以及SpringBoot整合Swagger(通俗易懂)
198 0
|
Java 数据库 数据安全/隐私保护
《SpringBoot篇》09.Spring Data JPA简介与SpringBoot整合超详细教学(二)
《SpringBoot篇》09.Spring Data JPA简介与SpringBoot整合超详细教学(二)
185 0
《SpringBoot篇》09.Spring Data JPA简介与SpringBoot整合超详细教学(二)
|
SQL Java 关系型数据库
《SpringBoot篇》09.Spring Data JPA简介与SpringBoot整合超详细教学(一)
《SpringBoot篇》09.Spring Data JPA简介与SpringBoot整合超详细教学(一)
190 0
《SpringBoot篇》09.Spring Data JPA简介与SpringBoot整合超详细教学(一)
|
消息中间件 监控 Java
RabbitMQ简介与springboot整合
RabbitMQ简介与springboot整合
174 0
RabbitMQ简介与springboot整合
|
1天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的汽车4s店管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的汽车4s店管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
26 6
基于SpringBoot+Vue的汽车4s店管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
1天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的拍卖管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的拍卖管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
30 9
|
1天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的易家宜超市云购物系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的易家宜超市云购物系统的详细设计和实现(源码+lw+部署文档+讲解等)
15 6
|
1天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的智慧农业小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的智慧农业小程序的详细设计和实现(源码+lw+部署文档+讲解等)
15 6