Spring-mvc 5: как загрузить файл внешних свойств с помощью @PropertySource ("# {systemProperties [...]}") - PullRequest
0 голосов
/ 11 февраля 2019

Я работаю над API отдыха, и структура проекта представляет собой многокомпонентный проект maven, организованный по слоям (репозиторий, сервис и т. Д.), И мой проект будет размещен на wildfly 13. Моя рабочая среда - windows 10 (64bit),

Я настроил свой модуль репозитория для загрузки файла внешних свойств, и у меня появилась эта ошибка:

13: 24: 04,470 INFO [org.jboss.as.controller] (DeploymentScanner-потоки - 2) WFLYCTL0183: отчет о состоянии службы WFLYCTL0186: службы, которые не удалось запустить: служба jboss.undertow.deployment.default-server.default-host./RestApiName: java.lang.RuntimeException: org.springframework.beans.factory.BeanDefition: Не удалось обработать кандидатов на импорт для класса конфигурации [com.company.be.restapiname.config.ServiceContextConfig];вложенным исключением является java.io.FileNotFoundException: (система не может найти указанный путь)

Полагаю, вместо получения правильного пути возвращается пробел, поскольку между FileNotFoundException есть несколько пробелов: и (Система ...).

Это мой класс конфигурации пружины:

@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 для разрешения пути

Я добавил переменную CONF через панель переменных Windows Env, и я 'Я не уверен, что systemProperties может получить доступ к среде Windows.Поэтому я добавил переменную в качестве параметра jvm в сценарий запуска wildfly

set "CONF = c: \ dev \ wildfly-13.0.0.Final \ standalone \ config"

set "JAVA_OPTS = -DCONF =% CONF%% JAVA_OPTS%"

И если я заменю выражение Spring абсолютным путем, я получу это сообщение:

WFLYCTL0186: Службы, которые не запустились: службаcom.company.be.restapiname.config.ServiceContextConfig];вложенное исключение: java.io.FileNotFoundException: c: \ dev \ wildfly-13.0.0.Final \ standalone \ config \ persistence.properties} (системе не удается найти указанный файл)

Спасибо взаранее ребята.

...