java - 如何确保在 Apache Tomcat 中运行的 Spring Boot 应用程序中替换了环境变量占位符?
问题描述
我有一个 Spring Boot 应用程序,它在 Apache Tomcat 服务器中运行。除application.yaml
其他外,我有以下条目:
mail:
pop3Host: ${MAIL_HOSTNAME}
inboxFolder: ${MAIL_INBOX}
hostName: ${MAIL_HOSTNAME}
port: ${MAIL_PORT}
userName: ${MAIL_USERNAME}
password: ${MAIL_PASSWORD}
该应用程序从 IntelliJ Idea 部署到 Tomcat,因此我可以对其进行调试。
我使用以下命令启动 Tomcat:
export JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8090,server=y,suspend=n"
export JAVA_OPTS=" -DMAIL_HOSTNAME='smtp.provider.com' -DMAIL_INBOX='MAIL_INBOX' -DMAIL_PORT='587' -DMAIL_USERNAME='username' -DMAIL_PASSWORD='XXXXXXXX'"
export CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8090,server=y,suspend=n"
./catalina.sh jpda start
然而,我之后
- 使用上述脚本启动 Tomcat,
- 从 IntelliJ Idea 部署 Spring Boot 应用程序,以及
- 确保执行使用这些值的代码,
我得到表明占位符未被替换的异常。
我该如何解决它,即确保我可以application.yaml
通过环境变量指定一些信息(如用户名和密码)(这样我就不会在中包含实际的凭据application.yaml
)?
解决方案
export JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8090,server=y,suspend=n"
export JAVA_OPTS=" -DMAIL_HOSTNAME='smtp.provider.com' -DMAIL_INBOX='MAIL_INBOX' -DMAIL_PORT='587' -DMAIL_USERNAME='username' -DMAIL_PASSWORD='XXXXXXXX'"
export CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8090,server=y,suspend=n"
./catalina.sh jpda start
将export MAIL_HOSTNAME=
etc. 添加到上述行,或setenv.sh
使用这些行创建一个文件(与文件在同一目录中catalina.sh
)。
使用setenv.sh
记录在RUNNING.txt
Apache Tomcat 的文件中。
推荐阅读
- c# - 检查一个大数字是否是一个有效的 Unicode 字符
- solr - Solr 停用词似乎不起作用,在索引时会删除停用词,但在查询时仍然会在邻近搜索中删除停用词
- javascript - 如何使用js在html中动态更改表格内容
- c# - 合并多个大尺寸的 tiff 文件时出现 OutOfMemoryException
- mainframe - 需要在 JCL 中读取另一个文件中的文件名的内容
- java - 在 SpringBoot 中动态从磁盘读取图像文件
- python - Python中矩形的可视化
- android - 在Android Q中请求角色时如何处理“不再询问”?
- python - 在Python中将具有多个值的分类变量重新编码为二进制变量
- python-3.x - 余弦相似度预处理任务