更新
我使用描述的方法here从“ classpath:”和“ classpath *:”中打印出生成的java类路径,并获得了以下内容,但是对于我在jms.properties中定义的属性,我仍然从PPC获得了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]
(这些文件夹包含jms.properties,jdbc.properties等文件)
和
StandaloneProject/src/main/resources/conf/[env]
(这些文件夹包含一个jgroups.properties文件)
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中有一些属性,但这是可行的。