问题标签 [spring-environment]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1671 浏览

java - 由于指定的配置文件 [默认] 不匹配而跳过 XML bean 定义文件

我们在 tomcat 上部署了一个 Spring 应用程序,但它没有启动。

应用程序错误如下:

我们确实在以下位置定义了一个属性文件:/opt/tomcat/appname/tomcat8-2,其中包含三个文件:config.properties、core-ws.proprties 和 log4j-config.xml

我们知道 ${TOMCAT_CONFIG_HOME} 被定义为:/opt/tomcat/appname/tomcat8-2

我们知道文件权限是正确的,运行tomcat的用户对这个config目录下的目录和文件有读权限。我可以作为那个 tomcat 用户编辑/读取属性文件。所以,我们知道这不是权限问题。

从应用程序日志中,我们收到以下错误消息:

Spring 应用程序上下文文件具有以下属性:

最后是 core-ws.properties 的样子:

所以,我已经研究了几天,我束手无策。我可以告诉你,我们对 log4j-config.xml 文件没有任何问题。该应用程序可以找到它,并且可以很好地阅读它。似乎只是这一个参数使应用程序崩溃...

对此问题的任何帮助将不胜感激。谢谢!

0 投票
1 回答
146 浏览

spring - 填充地图使用环境 Spring 中的整个 .property 文件

我有这个 myProperties.properties 文件,内容如下:

我的问题是如何填充或注入 a Map<String,String>- enum1..4 作为键和 1..d 作为环境变量中的值的所有属性值。

谢谢你的帮助。

0 投票
1 回答
778 浏览

java - Spring 5 从 Environment 获取对象列表

在 Java 9 上使用最新的 Spring 5 ....

使用以下 YAML:

使用Environment嵌套属性值可以像往常一样拉出(env.getProperty("flow[0].name")到字符串)。但是我如何将列表拉入一个List<Flow>

假设我需要一个ConfigurationProperties映射到一个Flow类。不想在 yaml 中添加流前缀。

然后通过Environment调用getProperty看起来像什么(例如env.getProperty("flow", List.class),但使用通用List<Flow>参考)。顺便说一句,我想要流列表的原因在设置环境(即 EnvironmentPostProcessor)后使用单独的配置注册 bean。

0 投票
1 回答
897 浏览

spring - Spring Environment:systemProperties 和 systemEnvironment 的顺序

是否可以从基础 PropertySources 控制 Spring Environment 的解析顺序?

例如。

我有操作系统环境变量

并使用系统环境变量运行 java

在 A 类的 bean 上调用方法 m 的输出是什么?如何更改扫描 SystemEnvironmentPropertySource 或 MapPropertySource [name='systemProperties'] 的顺序?

0 投票
0 回答
1651 浏览

spring - Spring Boot 属性作为环境变量

我遇到了一些行为,这些行为在 Spring Boot 如何处理应用程序属性文件与配置属性类中的环境变量方面似乎不一致。我不确定这是春季的错误还是我对“应该”发生的事情的理解中的错误。

我有

application.properties我的文件中:

仅设置 FOO_APIKEY

如果我运行我的应用程序:

然后我得到

请注意,在 URI 中,api 密钥和基本 URI 一样被设置

仅设置 FOO_API_KEY

接下来,如果相反,我尝试仅设置此属性(删除旧的 env var):

然后我的应用程序启动,但值不符合预期。我的日志显示:

请注意,现在基本 uri 也消失了,API 密钥也丢失了。

设置属性 FOO_API_KEY 和 FOO_APIKEY

当我设置两个环境变量时,应用程序启动,但 的apiKey属性ClientProperties保存FOO_APIKEY导出的值,其中的uri属性ClientProperties保存FOO_API_KEY导出的值。

笔记

我实际上不需要来自ClientProperties.apiKey. 它仅通过ClientProperties.uri已在application.properties. 但是,我指定了属性,以便我可以进行验证以确保设置了值。我可以从我的班级中删除该值,一切都会好起来的 - 期望然后我失去我的验证。

春季启动版本为:1.5.10.RELEASE

0 投票
1 回答
422 浏览

java - 为什么 bean 中的 Environment 在集成上下文中看不到来自源的属性?

在我的 Spring Integration webapp 配置中,我添加了一个属性占位符:

这是那个文件内容:

我确定此配置有效,因为我已尝试在 http inbound-channel-adapter 中使用该值:

如果我更改属性值,前端应用程序将无法到达端点。

但是,在上下文中,我有一个这样配置的端点:

我想在哪里读取属性值:

但在控制台上我看到:

我想一旦在 XML 中声明了将成为整个 Web 应用程序环境的一部分的属性源,我错过了什么?我应该在其他地方声明来源吗?

我注意到如果我添加以下注释:

该属性已正确找到,所以我想这只是一个配置问题。

如果它很重要,这里web.xml是配置集成的部分:


更新

部分遵循这个答案,我<ctx:property-placeholder>从 XML 文件中删除,并添加了以下 bean:

现在 bean 和 XML 文件都可以看到属性。

0 投票
2 回答
939 浏览

spring - Spring Elements 未在 Eclipse Navigator 下显示

尽管我启用了 Spring Elements,并且我可以看到,当我右键单击我的项目时,它不会显示在 Navigator 中的我的项目下。我也安装了必要的插件,但仍然无法解决问题。

我怎样才能解决这个问题?

0 投票
1 回答
46 浏览

spring - 无法从启动应用程序中的多个 yml 文件加载属性

我有一个微服务,我想拥有一些依赖于环境的属性,所以我使用 application.yml、application-dev.yml、application-int.yml 等.....

启动时,我通过spring.profiles.active=myprofile并且相关applicaiton-myprofile.yml的内容与applicaiton.yml. 到目前为止一切正常。

但是现在我想将我的一些非特定于环境的属性分类到他们自己的业务模块中,所以除了我的 application.yml applicaiton-.yml我还想将更多 yml 文件中的属性加载到 springENVIRONMENT中。所以我可以创建正确的 BusinessConfigProperties 类@ConfigurationProperties

为此,我尝试在 spring.config.location 中添加这些 yml 文件名,如下所示

我也提供了配置名称,我所有的 yml 文件都存在于 /config 文件夹中

但我仍然无法读取这些文件中提到的任何属性。

org.yaml.snakeyaml.Yml我可以通过手动加载带有太多样板代码的文件来克服这个问题,以读取 YML 映射并实例化我的类。应该有一个简单的方法来实现这一点。

更新

我在上面更新为,

但这也不起作用我没有使用配置文件,因为与上述文件一起,我已经拥有applicaiton-<profile>.yml了特定于环境的属性。我将spring.profile.active在启动 jvm 参数中作为环境名称传递。另外我不想以 application-<added_profile>.yml 开头命名这些文件