Добавьте @PropertySource во вложенный класс конфигурации в зависимости от JAR - PullRequest
0 голосов
/ 30 января 2019

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

package com.sjngm.core.config.properties;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "hefty", ignoreUnknownFields = false)
public class HeftyConfig {
  ...
}

На данный момент я бы сказал, что плохо добавлять @PropertySource кКласс, как я хочу, чтобы реальные проекты могли хранить свойства там, где они хотят.

Так что теперь я хочу использовать вышеуказанную базовую библиотеку в качестве зависимости в моем реальном проекте.На данный момент я хочу указать @PropertySource.Как бы я это сделал?

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

package com.sjngm.actual.config.properties;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component
@PropertySource(ignoreResourceNotFound = true, value = {
    "classpath:/config/default/hefty.properties",
    "classpath:/config/${spring.profiles.active}/hefty.properties",
    "file:/opt/project/path/hefty.properties"
})
@ConfigurationProperties(prefix = "hefty", ignoreUnknownFields = false)
public class HeftyConfig {
  ...
}

Очевидно, единственное отличие состоит в том, что аннотация @PropertySource.

Можно ли как-нибудь применить аннотацию к базовому классу по коду, прежде чем Spring проанализирует файлы свойств?Или я должен сделать это с подклассом, где я не знаю, работает ли это на самом деле, так как тогда будет два HeftyConfig -бина?Или какова лучшая практика для этого?

...