SpringBoot之两种配置文件properties与yml文件的区别及读取方式
为什么会使用properties文件
在软件开发的过程中,会经常遇到一些配置说是需要切换的,例如数据库的配置地址,用户名和密码,可以选择在常量中进行配置,但是当下次需要修改时,则需要将Java代码进行重新编译,再重启服务器。这样导致很繁琐。properties文件的出现使得后期项目的维护中,修改配置时会变得很简单。
yml后缀的又是什么文件
百度百科:YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如:C/C++, Ruby, Python, Java, Perl, C#, PHP等,它是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。
SpringBoot启动加载配置文件机制
SpringBoot启动时,会默认去寻找开发人员配置的application.properties文件或者application.yml文件来读取配置,其实yml和properties文件是一样的原理,且一个项目上要么yml或者properties,二选一的存在。
1.application.properties的配置方式,类似键值对的存在
#数据库连接池配置spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.platform=mysql#配置数据源spring.datasource.url=jdbc:mysql://localhost:3306/yangspring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driver#Mybatis配置#扫描的实体的包mybatis.typeAliasesPackage=com.yang.bean#扫描的配置文件地址mybatis.mapperLocations=classpath:mapper/*.xmlmybatis.configLocation=classpath:mybatis-config.xmlserver.port=8088#自定义信息userInfo.name=yanguserInfo.pass=123456
2.application.yml的配置方式如下,每一个等级占一行,子级别与父级别多一个tab,以此类推,每一个最终节点,配置信息时,冒号后面需要加空格,值得注意的是,一个级别在一个配置文件中只能出现以一次,如果出现多个,则SpringBoot启动的时候就会报错,例如,spring在全局中只能出现一次
#数据库连接池配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
platform: mysql
url: jdbc:mysql://localhost:3306/yang
#配置数据源
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
#Mybatis配置
#扫描的实体的包
#扫描的配置文件地址
mybatis:
typeAliasesPackage:com.yang.bean
mapperLocations:classpath:mapper/*.xml
configLocationclasspath:mybatis-config.xml
#服务启动地址
server:
port:8088
#自定义信息
userInfo:
name: yang
pass: 123456
properties文件的读取方式
properties文件读取不需要导入其他的jar包依赖,可以直接使用SpringBoot携带的注解即可
1.application.properties文件读取某个文件到变量中方法(@Value注解方式),编写Controller接口,直接读取properties配置文件
package com.yang.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.github.pagehelper.PageInfo;
import com.yang.bean.ResultObject;
import com.yang.bean.User;
import com.yang.service.IUserService;
/**
* @author Java小白
*
*/
@RestController //标识为返回类型为Json的控制器
public class UserController {
@Value("${userInfo.name}")
private String name;
//自动注入服务类
@Autowired
private IUserService userService;
//标识请求地址
@RequestMapping("/propertieGetUserName")
public String propertieGetUserName() {
return name;
}
}
2.接口访问结果如下
yml文件的读取方式
1.application.yml文件读取配置到某个对象中(@ConfigurationProperties注解方式),注意:对象名与配置文件中名字保持一致,这个方法同样适合properties文件
package com.yang.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
*
* 配置读取文件的对象
* @author Java小白
*
*/
@Component
@ConfigurationProperties(prefix = "userInfo")
// PropertySource默认取application.properties或者application.yml文件 可通过次注解指定其他文件
// @PropertySource(value = "config.properties")
public class UserInfo {
private String name;
private String pass;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
2.编写新的Controller接口,用来访问yml配置的信息
package com.yang.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.github.pagehelper.PageInfo;
import com.yang.bean.ResultObject;
import com.yang.bean.User;
import com.yang.bean.UserInfo;
import com.yang.service.IUserService;
/**
* @author Java小白
*
*/
@RestController //标识为返回类型为Json的控制器
public class UserController {
@Autowired
private UserInfo userInfo;
//标识请求地址
@RequestMapping("/ymlGetUserName")
public String ymlGetUserName() {
return userInfo.getName();
}
}
3.配置的yml访问接口返回如下
总结
本文介绍了properties文件和yml文件两种配置文件的读取的方式,以及SpringBoot如何读取文件中的配置信息,欢迎技术交流