配置文件是一种计算机文件,可以为计算机程序配置参数和设定初始值。在Spring Boot项目中,resources文件就是配置文件:
该目录下面的static目录里面主要存放静态文件,比如图片,css等。而templates目录下面主要用来存放模板文件。application.properties和application.yml则是项目的配置文件,整个项目中所有的数据都是在该配置文件中配置的,比如:数据库的连接信息、项目的启动端口、第三方系统的调用秘钥等信息、用于发现和定位问题的普通日志和异常日志等。
配置文件的格式
配置文件主要有两种格式:properties、yml
Spring Boot中配置文件的两个重要作用
1.位系统框架提供数据支持
2.为程序员自己去使用
properties
properties是创建Spring Boot项目默认的配置文件,properties是以键值对的形式配置的,key和value之间是以“=”连接的,比如:
#配置项目的端口
server.port=8080
properties的缺点:对于一个参数的多个配置设置很麻烦,需要从开始一直写到结束,并且冗余信息很多。
yml
yml是一个可读性高,易于理解,用来表达数据序列化的格式。yml是以key: value的形式组成,其中key和value之间使用英文冒号加空格的方式组成,并且空格一定不能省略。
#配置项目端口
server:
port: 8888
yml的优点:
可以跨语言、写法更加简洁可读性更高 、支持更多的数据类型
和properties对比,yml使用就比较简洁:
使用yml来配置对象
student:
id: 1
name: Java
age: 18
或者写成行内写法
student: {id: 1,name: Java,age: 18}
使用yml来配置集合
dbtypes:
nema:
- mysql
- sqlserver
- db2
或者使用行内写法
dbtypes: {name: [mysql,sqlserver,db2]}
读取配置文件
在Spring Boot项目中读取配置文件
方式一:使用@Value注解来实现,@Value主要用来读取单个配置项。
语法结构:@Value("${key}")
例如读取properties文件中的配置信息:
@SpringBootApplication
public class Application implements InitializingBean {
//读取配置文件中的url
@Value("${spring.datasource.url}")
private String url;
//读取配置文件中的username
@Value("${spring.datasource.username}")
private String username;
//读取配置文件中的password
@Value("$(spring.datasource.password)")
private String password;
@Override
public void afterPropertiesSet() throws Exception {
System.out.println();
System.out.println("url:"+url);
System.out.println("username:"+username);
System.out.println("password:"+password);
System.out.println();
}
}
方式二:使用@ConfigurationProperties("key")来读取多个配置信息
第一步:将配置文件中的一组对象映射到某个类上
在这一步中,两个注解@Component和@ConfigurationProperties非常重要,其中@Component可以替换为其他类注解,它的作用就是将当前类中的属性值替换为配置文件中的属性值。@ConfigurationProperties是用来读取配置文件的,它括号里面的prefix表示配置文件的前缀,prefix可加可不加
第二步:使用注入的方式在其他类中注入Student即可
@SpringBootApplication
public class Application implements InitializingBean {
//使用属性注入的方式来获取到学生类中的学生信息
@Autowired
private Student student;
@Override
public void afterPropertiesSet() throws Exception {
System.out.println();
System.out.println("student:"+student);
System.out.println();
}
}
使用@ConfigurationProperties("key")来读取集合
第一步:将配置文件中的一组对象映射到某个类上
第二步:使用注入的方式在其他类中注入MyList即可
@SpringBootApplication
public class Application implements InitializingBean {
//使用属性注入的方式来获取到MyList集合中的信息
@Autowired
private MyList myList;
@Override
public void afterPropertiesSet() throws Exception {
System.out.println();
System.out.println("mylist:"+myList.getName());
System.out.println();
}
}