一个通用的读取应用程序运行时的环境变量的类,可以读取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"; } } }
直接通过@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