上篇文章我们介绍了什么是SpringBoot和怎么去创建一个SpringBoot项目,现在我们具体创建之后,我们要进一步去介绍SpringBoot,就要深入了解一下SpringBoot的配置文件了,Spring Boot配置文件的重要性是因为配置文件在Spring Boot应用程序中扮演着关键的角色,它是配置应用程序行为的核心组成部分。
整个项目中所有重要的数据都是在配置文件中配置的,比如:·数据库的连接信息(包含用户名和密码的设置);
从这里可以看出,配置文件在SpringBoot当中是十分重要的.
在Spring Boot中,可以使用两种类型的配置文件:.properties和.yml(YAML)。这两种类型的配置文件都可以用于配置应用程序的属性和行为,但它们有一些语法和格式上的差异。
在Spring Boot中,可以使用两种类型的配置文件:.properties和.yml(YAML)。这两种类型的配置文件都可以用于配置应用程序的属性和行为,但它们有一些语法和格式上的差异。
# application.properties
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword
# 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文件是一种常见的配置文件格式,它使用键值对的方式来表示配置属性和属性值。在Spring Boot中,.properties配置文件用于配置应用程序的属性和行为。
properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的,如:
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword
如果在项⽬中,想要主动的读取配置⽂件中的内容,可以使⽤ @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;
}
}
yml是一个可读性高,写法简单、易于理解,它的语法和JSON语言类似。
yml支持更多的数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件等。
yml支持更多的编程语言,它不止是 Java中可以使用在Golang、PHP、Python、Ruby.JavaScript、Perl中。
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
读取.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;
}
}
@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);
}
}
从上述结果可以看出:
字符串默认不用加上单引号或者双引号。
单引号会转义特殊字符,特殊字符最终只是一个普通的字符串数据。
双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思。
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);
}
}