springboot读取配置文件

功能

演示如何获取配置文件中配置项,以及多环境下配置文件使用。

新建项目

  • 开发工具:idea

  • Create New Project -> Spring Initializr ->next-> 添加项目信息

  • 添加依赖 web -> spring web

配置文件

修改配置文件

  • 修改配置文件application.properties,配置文件也可以是yml结尾例如application.yml,本质是一样的,只是书写的格式不同
server.port=8080
spring.profiles.active=prod
  • spring.profiles.active是指定使用哪一个配置文件

新增application-dev

在resources目录下新增application-dev.properties配置文件

application.name=dev 环境
application.version= dev_1.0


developer.name=夏中伟dev
developer.website="www.xzhongwei.com"
developer.qq=1478497757
developer.phone-number=1111111111

新增application-prod

在resources目录下新增application-prod.properties配置文件

application.name=prod 环境
application.version= prod_1.0

developer.name=夏中伟prod
developer.website="www.xzhongwei.com"
developer.qq=1478497757
developer.phone-number=222222222

controller

因为用到了hutool需要添加hutool依赖

新建controller目录,并在该目录下新建类PropertyController.java

package indi.xzw.springboot_properties.controller;

import indi.xzw.springboot_properties.property.ApplicationProperty;
import indi.xzw.springboot_properties.property.DeveloperProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.hutool.core.lang.Dict;


@RestController
public class PropertyController {
    private final ApplicationProperty applicationProperty;
    private final DeveloperProperty developerProperty;

    @Autowired
    public PropertyController(ApplicationProperty applicationProperty, DeveloperProperty developerProperty) {
        this.applicationProperty = applicationProperty;
        this.developerProperty = developerProperty;
    }

    @GetMapping("/property")
    public Dict index() {
        //分别返回applicationProperty和developerProperty
        return Dict.create().set("applicationProperty", applicationProperty).set("developerProperty", developerProperty);
    }
}

property

用到了lombok,需要添加lombok依赖

新建property目录并在该目录下新建ApplicationProperty.java

package indi.xzw.springboot_properties.property;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
@Data
public class ApplicationProperty {
    //@Value读取配置文件中的值
    @Value("${application.name}")
    private String name;
    @Value("${application.version}")
    private String version;
}

我们可以使用 @Value 注解或着使用 Spring Environment bean 访问这些属性,是这种注入配置方式有时显得很笨重。我们将使用更安全的方式(@ConfigurationProperties )来获取这些属性。

在该目录下新建DeveloperProperty.java

package indi.xzw.springboot_properties.property;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@Data
@ConfigurationProperties(prefix = "developer")
public class DeveloperProperty {
    private String name;
    private String website;
    private String qq;
    private String phoneNumber;
}

测试

运行程序访问http://127.0.0.1:8080/property,因为我指定的环境是prod(spring.profiles.active=prod),所以显示的是prod环境,乱码是中文,如果把prod缓存dev显示的就是dev的环境

94

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×