赞
踩
server.port 启动端口,默认8080
server.servlet.context-path 应用上下文,相当于为当前的应用接口加了一个统一的前缀。当有多个应用且都有同一个 /firstrequest 接口时,就是通过应用上下文进行区分的
logging.file.name=d:/logs/myspringboot.log 应用输出日志的目录,配置后日志不仅在控制台输出,还会输出到指定的日志文件
logging.level.root=error 只会输出 error 及以上的级别的日志。日志的文件有五种,分别是debug,info,warning,error,fatal
debug=true 会将 debug 级别的日志输出
数据库连接的初始化
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.name=root
spring.datasource.password=mysql
yaml 是一种简洁的非标记语言,yaml 以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读
yaml 语法:
1、标准格式:key:(空格)value
2、使用空格表示层级关系,以:结尾
logging:
level:
root: info
file:
name: d:/logs/yumlog.log
https://toyaml.com/index.html
如将上述 数据库连接 的 properties 文件转换成 yaml 文件
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
name: root
password: mysql
url: jdbc:mysql://localhost:3306/test
Spring Boot 允许我们自定义应用配置项,在程序运行时允许动态加载,这为程序提供了良好的可维护性。最好不要写中文
mall:
config:
name: mail
hot-sales: 20
show-advert: true
注意,Java 文件中的属性必须和 application.yml 中的属性名完全相同
如果配置正常,按住 ctrl ,点击 MyController 中的 mall.config.name,可以直接跳转到配置文件中。properties 方式的配置文件可以跳转,yaml 方式的配置文件无法跳转
@RestController
public class MyController {
@Value("${mall.config.name}")
private String name;
@Value("${mall.config.hot-sales}")
private Integer hotSales;
@Value("${mall.config.show-advert}")
private Boolean showAdvert;
@GetMapping({"/info"})
public String info(){
return String.format("name:%s,hot-sales:%s,show-advert:%s",
name,hotSales,showAdvert);
}
}
遇到了一个报错:
nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder
检查缩进都是没有任何问题的,可以判断是我们配置的 application.yml 文件没有生效,经过检查发现是我们的文件名写错了,写成了 aplication.yml
对象的方式,更推荐
school.grade=100
school.classnum=3
@Component @ConfigurationProperties(prefix = "school") public class SchoolConfig { // 会自动找以school为前缀的,school.grade配置 Integer grade; String classnum; // 必须加 get ,set 方法 public Integer getGrade() { return grade; } public void setGrade(Integer grade) { this.grade = grade; } public String getClassnum() { return classnum; } public void setClassnum(String classnum) { this.classnum = classnum; } }
@RestController
public class ConfigController {
@Autowired
SchoolConfig schoolConfig;
@GetMapping("/gradefromconfig")
public String gradeclass(){
return "年级:" + schoolConfig.grade + ",年级:" + schoolConfig.classnum ;
}
}
Spring Boot 可以针对不同的环境提供不同的 Profile 文件,Profile 文件的默认命名格式为 application-{env}.yml
使用 spring.profiles.active 选项来指定不同的 profile
application.yml
spring:
profiles:
active: prd
application-dev.yml
debug: true
logging:
level:
root: info
file:
name: e:/myspringboot.log
mall:
config:
name: maildev
hot-sales: 20
show-advert: true
application-prd.yml
logging:
level:
root: info
file:
name: e:/myspringboot.log
mall:
config:
name: mailprd
hot-sales: 20
show-advert: true
server:
port: 80
注1:使用 application.properties 文件同理
application.properties
spring.profiles.active=prd
对应的配置文件分为 application-dev.properties 和 application-prd.properties
注2:yaml 和 properties 只是展示形式不同,本质上是一样的,举一个例子:
通用配置文件为:application.yml
spring:
profiles:
active: dev
其下的两个配置文件可以是 application-dev.properties 和 application-prd.yml,无需文件类型必须一致
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。