gpt4 book ai didi

java - Spring PropertyPlaceholderConfigurer 无法解析重复目录名下的属性文件 - 接收 BeanDefinitionStoreException

转载 作者:行者123 更新时间:2023-12-01 05:05:07 25 4
gpt4 key购买 nike

更新

我使用了描述的方法here从“classpath:”和“classpath*:”打印出生成的 java 类路径并得到以下结果,但我仍然从 PPC 中获取 jms.properties 文件中定义的属性的 BeanDefinitionStoreException 。什么给了!?

[main] INFO - .......Loading........
[main] INFO - printing normal classpath
[main] INFO - class path resource [conf/dev/jgroups.properties]
[main] INFO - printing wildcard classpath
[main] INFO - URL [jar:file:/filepath/StandaloneProject.jar!/conf/dev/jgroups.properties]
[main] INFO - URL [jar:file:/filepath/DependencyProject.jar!/conf/dev/jdbc.properties]
[main] INFO - URL [jar:file:/filepath/DependencyProject.jar!/conf/dev/jms.properties]

它在我的 Windows 机器上运行良好。它在我的开发 Linux 机器上失败了???如果您没有实际答案但可以指导我如何调试正在发生的事情,那么我们将不胜感激,这也会有所帮助。

更新#2

我也尝试添加

<property name="ignoreUnresolvablePlaceholders" value="true" />

到我的 EncryptablePropertyPlaceholderConfigurer 的属性列表,但我仍然收到 BeanDefinitionStoreException :(

背景

我正在使用一个独立的 java maven 项目,其中包含另一个项目作为依赖项。包含的项目是一组核心类,并且具有每个环境的属性文件。

这些文件在打包到依赖项 jar 中之前存储在 main/resources/conf/[env] 中(我们将其称为 DependencyProject)。该项目包含一个 Spring 2.5.6 PropertyPlaceholderConfigurer,用于自动将属性加载到 bean 中。

现在,我想做的是使用 jGroups 在多个服务器上集群我的应用程序。除了 DependencyProject 的属性之外,这还需要向 StandaloneProject 添加特定于环境的属性文件,以便 jGroups 知道它需要在每个环境中与哪个地址和端口进行通信。这些属性不属于依赖项。我想我会将它们放在 StandaloneProject 下具有相同文件夹名称的配置路径中,以便良好且一致。每个人都喜欢一致性,对吧?

所以,到目前为止我得到的是如下所示的文件夹:

DependencyProject/src/main/resources/conf/[env]
(these folders contain files like jms.properties, jdbc.properties, etc.)

StandaloneProject/src/main/resources/conf/[env]
(these folders contain a jgroups.properties file)

DependencyProject 在 PropertyPlaceholderConfigurer 中声明以下位置:

<value>classpath*:conf/${implementation.env}/*.properties</value>

我不打算使用 Spring 加载 jGroups 属性文件。我在应用程序执行中采用老式方式执行此操作。

问题

一个简单的事实是,conf/[env] 存在重复的目录路径,这导致了某处发生冲突,并且没有加载 DependencyProject 中的任何属性。我尝试添加“classpath*:”而不是仅添加“classpath:”,但它没有效果。我也尝试过使用 IgnoreUnresolvablePlaceholders,但我不确定这是否是正确的解决方案。

我知道它与文件夹结构有关,因为我可以插入一个文件夹,这样两个路径就不会互相镜像,并且一切正常。

DependencyProject/src/main/resources/conf/[env] StandaloneProject/src/main/resources/conf/folder/[env]

有什么想法吗?

最佳答案

我最终只是将 jgroups 文件夹放在我的 conf 文件夹下。我希望将所有内容都放在/conf 目录中,而不是/conf 中的某些属性和/conf/jgroups 中的某些属性,但这可行。

关于java - Spring PropertyPlaceholderConfigurer 无法解析重复目录名下的属性文件 - 接收 BeanDefinitionStoreException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12829427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com