Spring boot @ConfigurationProperties не загружается из файла внешних свойств или файла свойств пути к классам - PullRequest
0 голосов
/ 29 сентября 2018

Привет! Я пытаюсь использовать библиотеку многократного использования, которую я создал с помощью Spring Boot (2.0.5) из 2 приложений. Я могу связать свойства из application.properties, который находится в моем classpath, с моим bean-компонентом следующим образом, и я вижусхемы, устанавливаемые с помощью установщиков в моей отладке в моем первом приложении Spring Batch, которое также создается с помощью Spring boot (2.0.5)

Это класс bean-компонента свойства в моей библиотеке, который содержит некоторые служебные приложения.библиотека - это просто пакет jar, созданный с помощью весенней загрузки.

пакет com.test.lib.config

@ConfigurationProperties("job")

@PropertySources({

@PropertySource(value = "${ext.prop.dir}", ignoreResourceNotFound = true),

@PropertySource(value = "classpath:application.properties", ignoreResourceNotFound = true)

})

public class ServiceProperties {

           /**

           * Schema for the service

           */

           private String schema;


public String getSchema() {

                          return schema;

           }

           public void setSchema(String schema) {

                          this.schema = schema;
           }

}

И конфигурационный компонент для этой библиотеки выглядит следующим образом в том же пакете.

@Configuration

@EnableConfigurationProperties(ServiceProperties.class)

@ComponentScan("com.test.lib")

 public class LibraryModuleConfig {
 }

Этот код прекрасно работает при вызове из пакетного загрузочного спринта-приложения, которое включает эту библиотеку в качестве зависимости и вызывает соответствующие установщики, и я вижу набор схем при добавлении job.schema=testSchema в приложение.properties

Я пытаюсь использовать эту же библиотеку в существующем весеннем веб-приложении mvc, запущенномс сервера Tomcat с каталогом внешних файлов в качестве аргументов запуска (это приложение не было создано при весенней загрузке) и добавил соответствующий контекст: компонент-сканирование, чтобы включить компоненты (компоненты конфигурации Java) из библиотеки в контекст приложения (appn-context.xml).Свойство job.schema передается как из файла application.properties, так и даже из внешнего файла на диске C, как указано в $ {ext.prop.dir} "в аннотации @propertySources. Свойство схемы в компоненте ServiceProperties Bean никогда не устанавливается идаже отладчики никогда не вызываются в отладке. Почему этот bean-компонент конфигурации libray не будет работать в существующем приложении Spring mvc, но будет работать с приложением Spring Batch. Оба они добавляют библиотеку в качестве зависимости. Я долго занимался этимвремя и за исключением привязки свойства пружины другие функции, кажется, работают.

1 Ответ

0 голосов
/ 29 сентября 2018

@EnaleConfigurationProperties - это удобная аннотация, которую предоставляет Spring Boot.(Spring MVC не предоставляет по умолчанию)

Для устаревшего приложения Spring MVC (особенно для Spring 3.x) вы можете использовать @Value аннотацию для свойств.

@Value аннотация также работает в Spring Boot, поэтому, я думаю, вы можете внести изменения, чтобы она работала со старой версией (Spring 3.x), а более новая версия работает без каких-либо изменений.

Надеюсь, это поможет!Удачного кодирования:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...