我正在使用rest api,项目结构是按层(存储库,服务等)组织的maven多模块项目,我的项目将托管在wildfly 13上。我的工作环境是Windows 10(64位) 。
我将存储库模块配置为加载外部属性文件,但出现此错误:
13:24:04,470信息[org.jboss.as.controller](DeploymentScanner线程-2)WFLYCTL0183:服务状态报告 WFLYCTL0186:无法启动的服务:service jboss.undertow.deployment.default-server.default-host./RestApiName:java.lang.RuntimeException:org.springframework.beans.factory.BeanDefinitionStoreException:无法处理配置类的导入候选对象[com.company.be.restapiname.config.ServiceContextConfig];嵌套的异常是java.io.FileNotFoundException:(系统找不到指定的路径)
我想不是返回正确的路径,而是返回一个空格,因为FileNotFoundException:和(系统...)之间存在多个空格。
这是我的spring配置类:
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = {"com.company.be.restapiname.repository"})
@PropertySource("file:#{systemProperties['CONF']}/persistence.properties")
public class PersistenceContextConfig {
...
}
我进行了一些研究,但由于以下原因,我不知道出了什么问题:
将SpEL与@PropertySource一起使用很随意; systemProperties是可以通过SpEL访问的预定义变量
“ File:”前缀意味着spring将使用FileSystemResource来解析路径
我通过Windows env变量面板添加了CONF变量,但我不确定systemProperty是否可以访问Windows环境。所以我将变量作为jvm参数添加到wildfly的启动脚本中
设置“ CONF = c:\ dev \ wildfly-13.0.0.Final \ standalone \ config”
设置“ JAVA_OPTS = -DCONF =%CONF%%JAVA_OPTS%”
如果我用绝对路径替换Spring表达式,则会收到以下消息:
WFLYCTL0186:无法启动的服务:service jboss.undertow.deployment.default-server.default-host./restApiName:java.lang.RuntimeException:org.springframework.beans.factory.BeanDefinitionStoreException:无法处理导入候选对象用于配置类[com.company.be.restapiname.config.ServiceContextConfig];嵌套的异常是java.io.FileNotFoundException:c:\ dev \ wildfly-13.0.0.Final \ standalone \ config \ persistence.properties}(系统找不到指定的文件)
先谢谢大家。