springboot的配置文件详情

springboot的配置文件及其使用

application.properties

1.语法
格式:key=value
如果是修改SpringBoot中的默认配置,那么key则不能任意编写,必须参考SpringBoot官方文档。
application.properties官方文档

2. 案例
在resources目录下新建application.properties

#配置tomcat端口号
server.port=18080
#配置项目根目录
server.servlet.context-path=/demo

此时tomcat端口就变成了了18080,访问根路径就变成了/demo

application.yml

1.简介
YML文件格式是YAML(YAML Aint Markup Language)编写的文件格式,是一种标记语言。可以直观被电脑识别的格式。容易阅读。容易与脚本语言交互。可以支持各种编程语言(C/C++、Ruby、Python、Java、Perl、C#、PHP)。以数据为核心,比XML更简洁。扩展名为.yml或.yaml

2.语法
简单理解起来就是,在yml的语法中是把数据描述成树型结构。
语法:key: value

3.对象数据
语法

#配置对象数据
key:
  key1: value1
  key2: value2
#或者
key2: {key1: value1,key2: value2}

案例:

#配置对象数据
user:
  name: steven
  age: 18
  addr: shenzhen
#或者
user2: {name: steven, age: 18, addr:shenzhen}

4.集合数据
语法

#配置集合数据
key:
  #value1与-之间存在一个空格
  - value1
  - value2
#或者
key2: [value1,value2]

案例

#配置集合数据
userList:
  #value1与-之间存在一个空格
  - steven
  - lucy
#或者
userList2: [steven,lucy]

#集合中是对象时
userListObj:
  #value1与-之间存在一个空格
  - name: steven
    age: 18
    sex: boy
  - name: lucy
    age: 17
    sex: girl

5.整理案例

#yml简单实战-配置tomcat相关内容
server:
  port: 18080
  servlet:
    context-path: /demo

配置文件与配置类的属性映射方式

获取配置文件中的值我们一般有几种方式:
1.@value注解的方式 只能获取简单值
2.@ConfigurationProperties
3.Environment的方式

1.@value的使用
@value注解将配置文件的值映射到Spring管理的Bean属性值

2.@ConfigurationProperties的使用
通过注解@ConfigurationProperties(prefix=’’配置文件中的key的前缀")可以将配置文件中的配置自动与实体进行映射。
使用@ConfigurationProperties方式要注意的问题:
创建的对象必须提供getter与Setter方法
添加该注解需要的Maven依赖
案例 (创建一个user类)

/**
 * 用户信息
 * @author ljiong
 * @version 
 * @description
 */
@Component
@ConfigurationProperties(prefix = "user")
public class User {
//注意,此处的属性名要与yml声明的属性名一致
    private String name;
    private Integer age;
    private String addr;
    //省略getter与setter
}

3.使用@value注入值
案例

@RestController
public class HelloController {

    @Value("${user2.name}")
    private String name;
    @Autowired
    private User user;

通过@value给那么和user赋予初始值,value里的属性英语yml文件的定义的属性异议对应,否则会赋值失败。
对应的yml应该是

user2: 
  name: 张三
user:
  name: 李四
  age: 23
  addr: 深圳 
  //注意一定要加空格

4.映射集合案例

@Component
@ConfigurationProperties(prefix = "user")
public class User {
  //注意,此处的属性名要与yml声明的属性名一致
  private String name;
  private Integer age;
  private String addr;
  private List<User> userListObj;

对应的yml文件应该是

#配置对象数据
user:
name: steven
age: 18
addr: shenzhen
#集合中是对象时
userListObj:
  #value1与-之间存在一个空格
  - name: steven
    age: 18
    sex: boy
  - name: lucy
    age: 17
    sex: girl

5.Environment映射
Environment映射用于一个配置文件中有太多属性名的方便读取方式。
用法如下,修改UserController:

@RestController
public class HelloController {

    @Value("${user.name}")
    private String name;
    @Autowired
    private User user;
    //Environment 会读取配置文件的所有属性
    @Autowired
    private Environment env;

    @RequestMapping("hello2")
    public String helle(){
        System.out.println("Hello SpringBoot5!");
        return "Hello SpringBoot6!user.name:" + name + ",user:" + user
                + ",env:" + env.getProperty("name") + "-->" + env.getProperty("user.age");
    }
}

6.profile
在开发的过程中,需要配置不同的环境,所以即使我们在application.yml中配置了相关的配置项,当时在测试是,需要修改数据源等端口路径的配置,测试完成之后,又上生产环境,这时配置又需要修改,修改起来很麻烦。SpringBoot提供了profile方式解决多环境问题。
在这里插入图片描述
多个配置文件方便前换到不同的环境,只需要在application.yml或者properties中修改spring.profiles.active属性即可
例如

spring:
  profiles:
    active: test //及切换到了application-test.yml的配置了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值