我要求将所有属性文件存储在目录中。该目录的位置应存储在系统环境变量中。在我的应用程序上下文中,我将需要访问此环境变量以创建FileSystemResource
Bean。这是我通常会有的示例:
<bean id="properties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<bean class="org.springframework.core.io.FileSystemResource">
<constructor-arg>
<value>myprops.properties</value>
</constructor-arg>
</bean>
</property>
</bean>
相反,我需要让它像
<value>${prop_file_location}/myprops.properties</value>
其中prop文件的位置是环境变量。有人知道这样做的简单方法吗?
我正在使用Spring 2.5.6和Java 1.6
后来我们升级到了Spring 3.0.X,我们能够利用spring表达式语言。我们的方法从三个bean简化为以下代码段:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:defaults.properties</value>
<value>file:/a/defined/location/project.properties</value>
<value>file:${AN_ENV_CONFIGURED_DIR}/project.properties</value>
</list>
</property>
<property name="ignoreResourceNotFound" value="true" />
<property name="searchSystemEnvironment" value="true" />
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
</bean>
这使我们可以拥有一个静态已知的开发位置(第一个默认设置),或者具有通过env变量配置的部署位置。配置器按顺序处理这些操作(即,部署的优先级高于默认值)。
我最终采用了非编程方法。我使用了MethodInvoker来检索环境值。然后,我能够将其传递到FileSystemResource中。
<bean id="configPath" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" >
<property name="targetClass" value="java.lang.String" />
<property name="staticMethod" value="java.lang.System.getenv" />
<property name="arguments">
<list>
<value>NAME_OF_VARIABLE</value>
</list>
</property>
</bean>
问题内容: 我要求将所有属性文件存储在目录中。该目录的位置应存储在系统环境变量中。在我的应用程序上下文中,我将需要访问此环境变量以创建FileSystemResource Bean。这是我通常会有的示例: 相反,我需要让它像 其中prop文件的位置是环境变量。有人知道这样做的简单方法吗? 我正在使用Spring 2.5.6和Java 1.6 问题答案: 后来我们升级到了Spring 3.0.X,我
问题内容: 所以我的Dockerfile是这样写的: 但是我想用 这样,我只需要在文件的一个位置写入用户名即可。但这是行不通的。 我该如何解决? 谢谢。 问题答案: 使用指令。根据文档: ARG指令定义了一个变量,用户可以在构建时使用docker build命令使用该标志,将其传递给构建器。如果用户指定了未在Dockerfile中定义的构建参数,则构建会输出警告。 因此,您实际上可以像这样使用:
问题内容: 我有一个Perl脚本,其中有一个类似的变量。我们可以将$ name的内容设置为可以导入其他文件并在其他文件中使用的环境变量吗? 我尝试过,但是这不起作用。 问题答案: 如果要影响您的进程或子进程的环境,请使用哈希: 如果要影响父进程的环境,则不会。至少没有父进程的合作。标准过程是发出shell脚本并让父进程执行该shell脚本: …并从shell(脚本)中调用该脚本为:
问题内容: 我的crontab每小时运行一次。当用户从终端运行作业时,运行它的用户在工作中具有环境变量,但是,显然,crontab在运行时不会被环境变量吸收。 我尝试过将它们放入,但是它们似乎仍然没有被捡起。有谁知道我可以将crontab可以接收的环境变量放在哪里? 问题答案: 在运行命令之前,让’cron’运行一个设置环境的shell脚本。 总是。 〜/ bin / Cron中的脚本都是指向单个
问题内容: 需要基于构建环境配置来设置标签的href值。 例如: 分期应有 产品应具有 当前设置: 生成命令: .env.staging.js: index.html: 在index.html中,这似乎不起作用。虽然类似的设置适用于JS文件 (可能是因为将JS文件解析并捆绑到一个文件中,并且捆绑程序在该时间点读取值) 尝试过的事情: index.html: (类似于PUBLIC_URL变量) 与浏
我有一个Spring Boot应用程序,它将在各种环境中运行,根据它运行的环境,它将连接到不同的数据库。我有几个文件,每个环境都有一个,如下所示: : : 在我的每个环境中,我都有一个名为的环境变量,它被设置为它所处的环境类型,例如或(文件的名称与环境名称完全匹配)。 如何让spring boot读取这个环境变量并自动选择正确的文件?我不想因为这个包的部署方式(它不会作为jar运行)而不得不执行整