Springboot初识(二)

文章目录

  • 前言
  • 一.Spring配置文件
    • 1.1 配置文件的作用
    • 1.2 配置文件的类型
  • 二.properties配置⽂件说明
    • 2.1 基本语法
    • 2.2 读取配置文件
  • 三.yml 配置⽂件说明
    • 2.1 基本语法
    • 2.2 读取配置文件
    • 2.3 注意事项

前言

上篇文章我们介绍了什么是SpringBoot和怎么去创建一个SpringBoot项目,现在我们具体创建之后,我们要进一步去介绍SpringBoot,就要深入了解一下SpringBoot的配置文件了,Spring Boot配置文件的重要性是因为配置文件在Spring Boot应用程序中扮演着关键的角色,它是配置应用程序行为的核心组成部分。

一.Spring配置文件

1.1 配置文件的作用

整个项目中所有重要的数据都是在配置文件中配置的,比如:·数据库的连接信息(包含用户名和密码的设置);

  • 项目的启动端口;
  • 第三方系统的调用秘钥等信息;
  • 用于发现和定位问题的普通日志和异常日志等。

从这里可以看出,配置文件在SpringBoot当中是十分重要的.

1.2 配置文件的类型

在Spring Boot中,可以使用两种类型的配置文件:.properties和.yml(YAML)。这两种类型的配置文件都可以用于配置应用程序的属性和行为,但它们有一些语法和格式上的差异。

在Spring Boot中,可以使用两种类型的配置文件:.properties和.yml(YAML)。这两种类型的配置文件都可以用于配置应用程序的属性和行为,但它们有一些语法和格式上的差异。

  1. properties配置文件: 这是一种常见的配置文件格式,使用键值对的方式表示属性和属性值。每一行表示一个配置项,用等号(=)将键和值分隔。例如:
# application.properties

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword

  1. yml配置文件: 这是一种基于缩进格式的配置文件,使用层级结构来表示属性和属性值。.yml文件更加易读和直观,适合复杂的配置场景。例如:
# application.yml

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: myuser
    password: mypassword

这里做出两点特殊总结:
1.理论上讲properties可以和 yml一起存在于一个项目当中,当properties和yml一起存在一个项目中时,如果配置文件中出现了同样的配置,比如 properties和 yml中都配置了“server.port"那么这个时候会以 properties中的配置为主,也就是.properties配置文件的优先级最高,但加载完.properties文件之后,也会加载.yml 文件的配置信息。
2.虽然理论上来讲.properties可以和.yml共存,但实际的业务当中,我们通常会采取一种统一的配置文件格式,这样可以更好的维护(降低故障率)。这就好像连锁店的服饰一样,不管是老款的服装还是新款的服装,一定要统一了才好看。

二.properties配置⽂件说明

Properties文件是一种常见的配置文件格式,它使用键值对的方式来表示配置属性和属性值。在Spring Boot中,.properties配置文件用于配置应用程序的属性和行为。

2.1 基本语法

properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的,如:

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword

2.2 读取配置文件

如果在项⽬中,想要主动的读取配置⽂件中的内容,可以使⽤ @Value 注解来实现。
@Value 注解使⽤“${}”的格式读取,如下代码所示:

@Controller
@ResponseBody //加在类上,表示当前页面中所有方法返回的都是非静态页面的数据
public class TestController {
    @Value("${server.port}")
    private  int port;


    //项目启动之后,就会把这个东西装进spring
    @RequestMapping("/sayhi") //=WebServlet(/url) localhost:8080/test/sayhi

    public String sayHi(){

        return "Hello World ->"+port;
    }
}

Springboot初识(二)_第1张图片

三.yml 配置⽂件说明

yml是一个可读性高,写法简单、易于理解,它的语法和JSON语言类似。
yml支持更多的数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件等。
yml支持更多的编程语言,它不止是 Java中可以使用在Golang、PHP、Python、Ruby.JavaScript、Perl中。

2.1 基本语法

yml是树形结构的配置文件,它的基础语法是“key: value”,注意key和 value 之间使用英文冒汗加空格的方式组成的,其中的空格不可省略。例如语法如下:

# application.properties

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword

2.2 读取配置文件

读取.yml配置文件与读取.properties配置文件类似,可以使用@ConfigurationProperties注解或@Value注解来将配置属性注入到应用程序中。具体例子如下:
代码如下:

@Controller
@ResponseBody //加在类上,表示当前页面中所有方法返回的都是非静态页面的数据
public class TestController {
    @Value("${server.port}")
    private  int port;


    //项目启动之后,就会把这个东西装进spring
    @RequestMapping("/sayhi") //=WebServlet(/url) localhost:8080/test/sayhi

    public String sayHi(){

        return "Hello World ->"+port;
    }
}

Springboot初识(二)_第2张图片

2.3 注意事项

  • 读取的问题
    接下来会使用一个例子,来说明:
    具体代码如下:
@Controller
public class TestController {
    @Value("${string.str1}")
    private String str1;
    @Value("${string.str2}")
    private String str2;
    @Value("${string.str3}")
    private String str3;
    @PostConstruct
    public void postConstruct(){
        System.out. println ( "string.str1: " +str1);
        System.out. println( "string.str2: " + str2);
        System.out. println("string.str3:" +str3);
    }

}

Springboot初识(二)_第3张图片
从上述结果可以看出:
字符串默认不用加上单引号或者双引号。
单引号会转义特殊字符,特殊字符最终只是一个普通的字符串数据。
双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思。

  • 可配置对象
    我们还可以在yml中配置对象,如下配置︰
student:
  id: 1
  name: zhangsan
  age : 18

代码如下:

@ConfigurationProperties("student")
@Component
@Setter
@Getter
@ToString
public class Student {
    private int id;
    private String name;
    private int age;
}

@Controller
public class StudentController {
    @Autowired
    private Student student;
    @PostConstruct
    public void doPostConstruct(){
        System.out.println(student);
    }

}

Springboot初识(二)_第4张图片

  • 其他更多的配置方法
    Spring Boot读取配置文件的N种方法
    https://juejin.cn/post/7132641888166739982
    更多系统配置项
    https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html

你可能感兴趣的:(javaEE进阶,spring,boot,后端,java)