Spring-MVC 5:如何使用@PropertySource(“#{systemProperties [...]}”“)

时间:2019-02-11 13:21:31

标签: java spring-mvc wildfly spring-java-config

我正在使用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}(系统找不到指定的文件)

先谢谢大家。

0 个答案:

没有答案