【Spring】SpringBoot 学习教程(二):Spring Boot配置文件使用解析


Spring Boot的优点是不需要太多的配置即可使用,但是在实际使用过程中,我们往往需要根据项目的情况来进行一些少量的配置。

一、配置文件分类

Spring Boot的配置文件主要分为两类:properties 和 YAML(.yml)。

.properties 格式的配置文件如下:

#properties格式
my.name=luhao
my.server.port=8080
my.servers[0]=dev.com
my.servers[1]=tes.com

.yml 格式的配置文件如下:

#YAML格式
my:
    name: luhao
    server:
        port: 8080
    servers:
        - dev.com
        - tes.com

properties格式需要写出完整的层级结构,较为复杂;而yml格式类似于JSON,可以很直观的看到层级结构。

Tips:短横杠“-”代表的是数组元素。

注意
1.使用.yml时,属性名的值和冒号中间必须有空格,如name: luhao正确,name:luhao就是错的。
2.使用.yml时,层级是根据缩进来判断的,当出现错误时,可以检查下是否格式不正确。

二、自定义属性加载

可以在配置文件中定义一些属性,当需要使用到配置文件中的属性时,在代码中可以通过 @Value("${自定义属性}") 引用。

@Controller
public class HelloWorld {

    @Value("${my.name}")
    private String name;
    @Value("${my.servers[0]}")
    private String servers;

    @ResponseBody
    @RequestMapping("/")
    public String index(Model model) {
        return name + " : " + servers;
    }

}

启动应用,输入http://localhost:8080,显示效果如下:
在这里插入图片描述

三、实体类使用

当需要在实体类加载自定义的属性时,有以下两种方式进行加载。

方式一:

@Component
public class MyInfo {
    @Value("${my.name}")
    private String name;

    @Value("${my.servers[0]}")
    private String servers;

    //省略get和set方法
}

方式二:

@Component
@ConfigurationProperties(prefix="my")
public class MyInfo {
    private String name;
    private String [] servers;
    // 省略getter和setter
}

在别的类使用时只需要引入即可,引入以及调用代码如下。

@Controller
public class HelloWorld {

    @Autowired
    private MyInfo myInfo;

    @ResponseBody
    @RequestMapping("/")
    public String index(Model model) {
        return myInfo.getName() + " : " + myInfo.getServers();
    }

}

启动应用,输入http://localhost:8080,显示效果如下:
在这里插入图片描述

注意:
当使用方式二进行配置的时候,可能会显示如下警告: Spring Boot Configuration Annotation Processor not configured

在这里插入图片描述
解决方法:在pmo.xml里添加如下依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

该问题不影响系统正常启动, 它的意思是“Spring Boot配置注解执行器没有配置”,配置了注解执行器以后,如果先在类中定义了这个字段,在配置文件去对定义这个字段时可以自动弹出提示

四、多开发配置文件

当开发需要配置的属性较多或者需要按模块进行配置时,可以放在自定义的其他配置文件当中,比如新定义一个配置文件,course.properties,当需要用到这个配置文件的内容时,只需要加上一行注解**@PropertySource(value = “配置文件路径”)**即可。

course.properties:

course.name=English
course.time=45min

CourseInfo.java

@Component
@PropertySource(value = "classpath:course.properties")
@ConfigurationProperties(prefix="course")
public class CourseInfo {
    private String name;
    private String time;
    // 省略getter和setter
}

HelloWorld.java

@Controller
public class HelloWorld {

    @Autowired
    private CourseInfo courseInfo;
    
    @ResponseBody
    @RequestMapping("/")
    public String index(Model model) {
        return courseInfo.getName() + " : " + courseInfo.getTime();
    }

}

启动应用,输入http://localhost:8080,显示效果如下:
在这里插入图片描述

五、多环境配置文件

通常我们开发的应用会被放在不同的环境上去运行,每个环境的配置也不相同,这时候可以定义不同的环境配置文件,用的时候只需要更改 application.yml/ application. properties主要配置文件就可以了。

自定义环境配置文件格式:: application-{profile}.properties, 其中{profile}对应你的环境标识,例如:

  • application-test.properties:测试环境
  • application-dev.properties:开发环境
  • application-prod.properties:生产环境

使用时在主配置文件application.yml中添加

spring:
  profiles:
    active: dev

application-dev.yml:

server:
  port: 8082

此时重新启动应用发现端口是8082(默认8080)
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值