文章目录
1. IDEA 配置 VM Options
1.1 IDEA 配置 VM Options
1.2 spring 项目注入用户环境变量
2. Tomcat 部署配置用户环境变量
2.1 Windows: standard environment variables
2.2 Linux: user defined CLASSPATH variables
1. IDEA 配置 VM Options
1.1 IDEA 配置 VM Options
此处以维护用户环境变量 DES_SECRET 用于配置文件加密的秘钥为例;spring 项目可通过 org.springframework.core.env.Environment 获取变量的 value
SpringMVC 项目
可以配置 VM Options 项
SpringBoot 项目
可以配置 Environment variables 项或者 VM Options
1.2 spring 项目注入用户环境变量
配置后用户环境变量后,项目可通过 PropertiesUtil.getProperty(“DES_SECRET”) 获取配置的 value。
项目打包后放入 tomcat_home/webapps 路径下,运行 startup.bat/startup.sh 可以正常启动 tomcat 服务即可,若未配置用户环境变量,项目初始化动作需要该变量时,则启动会报错。
环境变量加载及获取关键代码演示
PropertiesUtil.java
import org.springframework.core.env.Environment;
/**
* @description: 配置文件属性读取
**/
public class PropertiesUtil {
public static Environment env;
/**
* 根据属性KEY取得属性值
*/
public static String getProperty(String name) {
return env.getProperty(name);
}
}
Configuration.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.core.env.Environment;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.web.context.request.RequestContextListener;
/**
* @description: spring配置
*/
@org.springframework.context.annotation.Configuration
@EnableAsync
public class Configuration {
/**
* 注入上下文环境
* @param env
*/
@Autowired
public void set(Environment env) {
PropertiesUtil.env = env;
}
/**
* 设置spring security提示为中文
* @return ReloadableResourceBundleMessageSource
*/
@Bean
public ReloadableResourceBundleMessageSource setLocalization() {
ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource = new ReloadableResourceBundleMessageSource();
reloadableResourceBundleMessageSource.setBasenames("classpath:messages");
reloadableResourceBundleMessageSource.setUseCodeAsDefaultMessage(true);
reloadableResourceBundleMessageSource.setDefaultEncoding("UTF-8");
return reloadableResourceBundleMessageSource;
}
/**
* 注入spring请求上下文监听
* @return spring请求上下文监听
*/
@Bean
public RequestContextListener requestContextListener() {
return new RequestContextListener();
}
}
2. Tomcat 部署配置用户环境变量
此处是通过 tomcat/bin 下的配置文件永久修改,不是通过命令行命令来设置的。
2.1 Windows: standard environment variables
可通过创建 setenv.bat 文件,单独配置标准环境变量;
查看 tomcat_home/bin/catalina.cat 包含以下配置信息,如果我们想添加标准环境变量可以通过 setenv.sh 实现;
下载的 tomcat 一般默认不包含 setenv.bat 文件;此处我们可以新建 setenv.bat,编辑标准环境变量保存后,运行 shutdown.bat 关闭 tomcat 服务,重新运行 start.bat 启动即可。
rem Get standard environment variables
if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome
call "%CATALINA_BASE%\bin\setenv.bat"
goto setenvDone
:checkSetenvHome
if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"
:setenvDone
新建文件 setenv.bat 配置环境变量 DES_SECRET
set JAVA_OPTS=-DDES_SECRET=123654
2.2 Linux: user defined CLASSPATH variables
相同的,可以通过创建 setenv.sh 文件配置标准环境变量;以下是 catalina.sh 部分配置
# Ensure that any user defined CLASSPATH variables are not used on startup,
# but allow them to be specified in setenv.sh, in rare case when it is needed.
CLASSPATH=
if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
. "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
. "$CATALINA_HOME/bin/setenv.sh"
fi
新建 setenv.sh,配置自定义的环境变量,shutdown.sh 停止服务,重新运行 startup.sh 即可。
export JAVA_OPTS="$JAVA_OPTS -DDES_SECRET=123654"
Power By niaonao, The End