java - 外部化 spring boot 配置

标签 java spring-boot tomcat centos

我的环境是Centos 7、Tomcat 8和Java 8 我开发了 spring-boot 应用程序。我想将 application.properties 中的参数外部化,所以我将它们复制到外部属性文件中。

在这里,application.proprerties 文件(spring-boot 应用程序):

spring.datasource.username= ${db.username}
spring.datasource.password= ${db.password}

这是我的外部属性文件:

enter image description here

内容:

db.username=root
db.password=test

我已经在 tomcat/bin 文件夹中创建了 setenv.sh 文件来添加 java 选项 这是我的 setenv.sh :

enter image description here

内容:

JAVA_OPTS="$JAVA_OPTS -Dspring.config.additional-location=/home/centos/myjarvia/configuration/application.properties"

但是当 tomcat 启动时它失败了。(即使 catalina.out 日志文件显示找到了属性文件...

catalina.out 文件内容:

26-Mar-2019 22:17:04.037 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.5.39
26-Mar-2019 22:17:04.039 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Mar 14 2019 11:24:26 UTC
26-Mar-2019 22:17:04.039 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.5.39.0
26-Mar-2019 22:17:04.040 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
26-Mar-2019 22:17:04.040 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            3.10.0-957.5.1.el7.x86_64
26-Mar-2019 22:17:04.040 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
26-Mar-2019 22:17:04.040 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64/jre
26-Mar-2019 22:17:04.040 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_201-b09
26-Mar-2019 22:17:04.040 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
26-Mar-2019 22:17:04.040 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /opt/tomcat
26-Mar-2019 22:17:04.040 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /opt/tomcat
26-Mar-2019 22:17:04.041 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties
26-Mar-2019 22:17:04.041 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
26-Mar-2019 22:17:04.041 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dspring.config.additional-location=/home/centos/myjarvia/configuration/application.properties
26-Mar-2019 22:17:04.041 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
26-Mar-2019 22:17:04.041 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
26-Mar-2019 22:17:04.041 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
26-Mar-2019 22:17:04.041 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
26-Mar-2019 22:17:04.041 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/opt/tomcat
26-Mar-2019 22:17:04.041 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/opt/tomcat
26-Mar-2019 22:17:04.041 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/opt/tomcat/temp
26-Mar-2019 22:17:04.042 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environm$
26-Mar-2019 22:17:04.147 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
26-Mar-2019 22:17:04.167 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
26-Mar-2019 22:17:04.200 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
26-Mar-2019 22:17:04.202 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
26-Mar-2019 22:17:04.203 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 584 ms
26-Mar-2019 22:17:04.242 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
26-Mar-2019 22:17:04.242 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.39
26-Mar-2019 22:17:04.282 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat/webapps/MyJarviaBackDevice-1.0.war]

   .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.0.4.RELEASE)

2019-03-26 22:17:08.449  INFO 30878 --- [ost-startStop-1] c.t.mc.myjarvia.MyJarviaBackDeviceApp    : Starting MyJarviaBackDeviceApp v0.0.1 on serveur-1 with PID 30878 (/opt/tomcat/webapps/MyJarvia$
2019-03-26 22:17:08.468  INFO 30878 --- [ost-startStop-1] c.t.mc.myjarvia.MyJarviaBackDeviceApp    : No active profile set, falling back to default profiles: default
2019-03-26 22:17:08.558  INFO 30878 --- [ost-startStop-1] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplica$
2019-03-26 22:17:09.926  INFO 30878 --- [ost-startStop-1] o.s.b.f.xml.XmlBeanDefinitionReader      : Loading XML bean definitions from class path resource [context/dataBinder_context.xml]
2019-03-26 22:17:11.916  INFO 30878 --- [ost-startStop-1] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of ty$
2019-03-26 22:17:11.988  INFO 30878 --- [ost-startStop-1] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfigura$
2019-03-26 22:17:12.001  INFO 30878 --- [ost-startStop-1] trationDelegate$BeanPostProcessorChecker : Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuratio$
2019-03-26 22:17:12.002  INFO 30878 --- [ost-startStop-1] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHand$
2019-03-26 22:17:12.021  INFO 30878 --- [ost-startStop-1] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.config.annotation.method.configuration.Jsr250MetadataSourceC$
2019-03-26 22:17:12.033  INFO 30878 --- [ost-startStop-1] trationDelegate$BeanPostProcessorChecker : Bean 'jsr250MethodSecurityMetadataSource' of type [org.springframework.security.access.annotati$
2019-03-26 22:17:12.036  INFO 30878 --- [ost-startStop-1] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityC$
2019-03-26 22:17:12.056  INFO 30878 --- [ost-startStop-1] trationDelegate$BeanPostProcessorChecker : Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.Delegat$
2019-03-26 22:17:12.065  INFO 30878 --- [ost-startStop-1] trationDelegate$BeanPostProcessorChecker : Bean 'org.apache.camel.spring.boot.CamelAutoConfiguration' of type [org.apache.camel.spring.boo$
2019-03-26 22:17:12.110  INFO 30878 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 3552 ms
2019-03-26 22:17:13.138  INFO 30878 --- [ost-startStop-1] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2019-03-26 22:17:14.389 ERROR 30878 --- [ost-startStop-1] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initialization.

java.sql.SQLException: Access denied for user '${db.username}'@'localhost' (using password: YES)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1714) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1224) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2199) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2230) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2025) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:778) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) ~[mysql-connector-java-5.1.47.jar:5.1.47]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_201]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_201]

我不明白这是怎么回事

最佳答案

just add this in your external properties file

spring.datasource.username=提及数据库用户名

spring.datasource.password=提数据库密码

it will aumotaically override

and remove other things like db.username and like that

关于java - 外部化 spring boot 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55372693/

相关文章:

java - Ebean finder 列表大小条件

java - 当设备处于横向模式时显示软键盘

spring-boot - 无法检索请求的元数据/latest/meta-data/public-hostname

java - Spring Boot 中 Grails 的 BootStrap#init 等效项?

java - 您能为 Java Web 应用程序编码推荐一个标准的、很酷的环境吗?

java - 当在数据库中的表之间添加新映射时,出现错误: Injection of autowired dependencies failed

java - 如何使用 :switch and th:each 处理 thymeleaf 中的两个列表

tomcat - 无法在液滴上命中 Springboot 端点

jsp - 将文件从 Windows 客户端上传到 Linux tomcat 服务器时出现 FileNotFoundException

java - 无法找到 weblogic.management.mbeanservers.domainruntime