Допустим, у меня есть базовая библиотека, которая требует настройки и, следовательно, предоставляет класс конфигурации, подобный этому:
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
-бина?Или какова лучшая практика для этого?