Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring中使用系统重写属性_Java_Spring_Amazon Web Services_Amazon Elastic Beanstalk - Fatal编程技术网

Java 在Spring中使用系统重写属性

Java 在Spring中使用系统重写属性,java,spring,amazon-web-services,amazon-elastic-beanstalk,Java,Spring,Amazon Web Services,Amazon Elastic Beanstalk,我开发了一个将在AWS BeanStalk上运行的rest WS 目前,数据源配置了属性文件: database.driverClass=org.postgresql.Driver database.jdbcUrl=jdbc:postgresql://localhost:5432/public database.username=postgres database.password=postgres 在context.xml中: <bean id="dataSource" class="

我开发了一个将在AWS BeanStalk上运行的rest WS

目前,数据源配置了属性文件:

database.driverClass=org.postgresql.Driver
database.jdbcUrl=jdbc:postgresql://localhost:5432/public
database.username=postgres
database.password=postgres
在context.xml中:

<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
    <property name="driverClass" value="${database.driverClass}" />
    <property name="jdbcUrl" value="${database.jdbcUrl}"/>
....
在prepod.property

或者在context.xml中用系统属性重置database.jdbcUrl?

您可以这样做

   <context:property-placeholder ignore-unresolvable="true" ignore-resource-not-found="true" location="classpath:database.properties, file:preProd.properties" />

和prepod.properties将在prepod机器上。键将相同,但值将不同。这样,如果找不到prepod.properties(例如在dev机器上),将使用database.properties。如果存在文件prepod.properties,它将覆盖database.properties中的值

如果您使用的是maven,您还可以使用maven配置文件和maven替换插件。

您可以这样做

   <context:property-placeholder ignore-unresolvable="true" ignore-resource-not-found="true" location="classpath:database.properties, file:preProd.properties" />

和prepod.properties将在prepod机器上。键将相同,但值将不同。这样,如果找不到prepod.properties(例如在dev机器上),将使用database.properties。如果存在文件prepod.properties,它将覆盖database.properties中的值


如果您使用的是maven,那么您也可以使用maven profile和maven replacer插件。

在命令行上设置属性是否有效?您使用的是什么构建工具?编写脚本以根据输出目标生成自定义属性文件非常简单。@mttdbrd:我更喜欢使用一个war来加载依赖于spring.profiles.active的上下文。@chrylis:我从你的评论和mttdbrd的评论中看到了,我忘了说它是一个webapp:pYes,我是说你为像Maven这样的人设定了一个目标“预打印“它会自动创建正确的属性文件,并在一场战争中填充它。如果使用得当,单个生成工具可以生成具有正确的.test、local、prepod、prod等属性的正确war文件。在命令行上设置属性是否有效?您使用的是什么生成工具?编写脚本以根据输出目标生成自定义属性文件非常简单。@mttdbrd:我更喜欢使用一个war来加载依赖于spring.profiles.active的上下文。@chrylis:我从你的评论和mttdbrd的评论中看到了,我忘了说它是一个webapp:pYes,我是说你为像Maven这样的人设定了一个目标“预打印“它会自动创建正确的属性文件,并在一场战争中填充它。如果使用得当,单个构建工具可以为test、local、prepod、prod等生成具有正确.properties的正确war文件。Maven似乎是一种方法。不确定OP是否在使用它,但这正是Maven设计用来解决的问题。我相信你也可以用Gradle做同样的事情,但我不知道怎么做。它不适用,因为目标是部署在beanstalk上,它会创建一个RDS,并为我们提供系统属性。ops只想部署一个war文件,没有任何构建系统。他们是如何获得war文件的?你必须做一些构建才能达到这一点。我想说的是在一切准备就绪之前进行干预。马文似乎是解决问题的方法。不确定OP是否在使用它,但这正是Maven设计用来解决的问题。我相信你也可以用Gradle做同样的事情,但我不知道怎么做。它不适用,因为目标是部署在beanstalk上,它会创建一个RDS,并为我们提供系统属性。ops只想部署一个war文件,没有任何构建系统。他们是如何获得war文件的?你必须做一些构建才能达到这一点。我想说的是在一切都打包好之前进行干预。