前言
创建springboot项目后,默认生成了有一个aplication.properties配置文件,这个里面是项目的属性配置,默认的是properties配置文件,但在springboot中还可以使用.yml来配置,使用yml来说,属性格式要简单的多,所以推荐大家使用。
这里基本的配置我不讲,主要讲引用配置文件的参数和多生产环境配置。
创建aplication.yml
在resources文件夹下创建aplication.yml文件,删除原有的properties配置文件。
怎样看yml配置文件是否有效呢?编写yml文件:
server:
port: 8081
注:因为yml的语法原因,port:后面必须要有一个空格,否则配置不生效。
运行项目,然后使用8081端口访问项目,能成功访问则成功。
引用配置文件中自定义的参数
有时候我们需要在配置文件中配置一些参数,这些参数是自定义的,那我们怎么配置参数并使用呢?
自定义配置参数
假设我们定义一个人,人有两个参数,尺寸和年龄。
man:
size: M
age: 22
那配置好了,我们怎么拿到配置的参数值呢?方法有很多,可以直接通过@Value注解拿到。
@Value("${man.size}")
private String size;
@Value("${man.age}")
private Integer age;
但是如果配置参数很多呢,显然不适用,我说一下我认为最合理的方法。
创建实体
package cn.notemi.properties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* Title:ManProperties
* Description:
*
* @author Flicker
* @create 2017-08-03 下午 4:05
**/
@Component
@ConfigurationProperties(value = "man")
public class ManProperties {
private Integer age;
private String size;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
}
@ConfigurationProperties获取前缀是man的配置映射过来。
@Component注入配置。
使用
package cn.notemi.controller;
import cn.notemi.properties.ManProperties;
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.RestController;
/**
* Title:HelloController
* Description:
*
* @author Flicker
* @create 2017-08-03 下午 3:48
**/
@RestController
public class HelloController {
@Autowired
private ManProperties manProperties;
@RequestMapping(value = "/hello")
public String index(){
return manProperties.getSize() + manProperties.getAge();
}
}
@Autowired注入,获取值。
多环境切换
平时做项目难免会遇到开发环境和生产环境不同的配置,如何快捷的切换环境配置呢,在这里也有很好的解决办法。
我们先将配置文件复制为三份。
比如我们的生产环境需要的配置是这样的,我们编写aplication-prod.yml为:
server:
port: 8081
man:
size: S
age: 20
开发环境是这样的,编写aplication-dev.yml:
server:
port: 8080
man:
size: M
age: 22
然后我们设置当前使用哪一个环境,编写aplication.yml:
spring:
profiles:
active: dev
这里的dev就是应用aplication-dev,相同的如果改正prod,就应用aplication-prod。
也就是说aplication.yml中我们可以放不同生产环境都会用到的配置,通过profiles:active来应用其他配置。
aplication-*中就是不同生产环境需要用到的不同配置。
Comments (暂无评论)