springboot-读取应用配置

时间:2021-07-13
本文章向大家介绍springboot-读取应用配置,主要包括springboot-读取应用配置使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1、Environment

一个通用的读取应用程序运行时的环境变量的类,可以读取application.properties,命令行输入参数,系统属性,操作系统环境变量等。可以通过Spring容器自动注入。Environment可以用在Spring应用的任何地方。

EnvConfig

package com.gcz.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

/**
 * @author guocz
 * @date 20210713
 * 环境参数
 */
@Configuration
public class EnvConfig {

    @Autowired
    private Environment environment;

    public String getServerPort() {
        return environment.getProperty("server.port", String.class);
    }

    public String getUserDir(){
        return environment.getProperty("user.dir", String.class);
    }

    public String getUserHome(){
        return environment.getProperty("user.home", String.class);
    }

    public String getJavaHome(){
        return environment.getProperty("JAVA_HOME", String.class);
    }
}

controller

package com.gcz.controller;

import cn.hutool.core.util.StrUtil;
import com.gcz.config.EnvConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/**
 * @author guocz
 * @date 20210713
 * 读取应用配置
 */
@Controller
@RequestMapping("/prop")
public class PropertiesController {

    @Autowired
    private EnvConfig envConfig;

    /**
     * 服务端口
     */
    private final static String SERVER_PORT = "server.port";

    /**
     * 程序运行目录
     */
    private final static String USER_DIR = "user.dir";

    /**
     * 用户home目录
     */
    private final static String USER_HOME = "user.home";

    /**
     * 读取环境变量
     */
    private final static String JAVA_HOME = "JAVA_HOME";

    @RequestMapping(value = "/{param}")
    @ResponseBody
    public String getProperties(@PathVariable String param){
        if (StrUtil.equals(param, SERVER_PORT)) {
            return envConfig.getServerPort();
        }else if (StrUtil.equals(param, USER_DIR)) {
            return envConfig.getUserDir();
        }else if (StrUtil.equals(param, USER_HOME)) {
            return envConfig.getUserHome();
        }else if (StrUtil.equals(param, JAVA_HOME)) {
            return envConfig.getJavaHome();
        }else {
            return "not exist";
        }
    }
}

 2、@Value

直接通过@Value注解注入一个配置信息到Spring管理的Bean中

controller

   /**
     * 读取配置
     * @param port
     * @return
     */
    @RequestMapping("/getValue")
    @ResponseBody
    public String getValue(@Value("${server.port}") String port) {
        return port;
    }

or

   /**
     * 端口号
     */
    @Value("${server.port}")
    private String value;
   /**
     * 读取配置
     * @return
     */
    @RequestMapping("/getValue1")
    @ResponseBody
    public String getValue() {
        return value;
    }

 

原文地址:https://www.cnblogs.com/canzhen/p/15004902.html