whereeaglesdare
@whereeaglesdare

Как правильно подгружать ресурсы в Spring?

Добрый день
Пишу приложение, в котором при старте нужно чтобы подтягивались файлы конфигурации(properties + json).
К этой конфигурации будут постоянно обращаться сервисы приложения и выносить ее отдельно в бд не хочу.
Идея такова - при запуске считываются файлы конфигурации, данные конфигурации можно достать с помощью вызова метода синглтона
MyConfig.getInstance().getValue("key")

Вопрос первый:
Я так понимаю, логику считывания настроек приложения при запуске можно сделать с помощью InitializingBean Interface
https://www.baeldung.com/running-setup-logic-on-st...
В этом же классе полученные параметры "добавляются" в синглтон, к которому будут обращаться сервисы

Вопрос второй
Правильный ли у меня подход к решению этой задачи?
  • Вопрос задан
  • 202 просмотра
Решения вопроса 2
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Еще простое решение -
Создайте файл ApplicationProperties
@Configuration
@ConfigurationProperties(prefix = "application")
public class AppProperties {

    @Getter
    @Setter
    private String baseUrl;

   
    @Getter
    @Setter
    private String uploadPath;

}


Добавьте нужные конфиги:
application.base_url=http://localhost:7777
application.upload_path=/home/admin/application.com/uploads

Обратите внимание на названия параметров.
Сперва в конфиге указываем префикс application (вы можете указать свой префикс).
Далее base_url => baseUrl upload_path => uploadPath

Далее в MyApplication (в точку входа приложения) добавьте аннотацию:

@EnableConfigurationProperties({
        ApplicationProperties.class
})
public class MyApplication {
}


Теперь в любом компоненте Spring вы можете аутовайрить этот класс и при помощи геттеров получать нужные параметры.
Вот, .пример:

@Controller
@RequiredArgsConstructor
public class MyController {

private final ApplicationProperties properties;

// ... тут методы контроллера
String uploadPath = properties.getUploadPath();
//...

}

Источник - https://www.baeldung.com/properties-with-spring
Ответ написан
Комментировать
Chronicler
@Chronicler
Программист
Со Spring Boot можно проще:
аннотация @Value
@SpringBootApplication
class MySpringBootApplication {
@Value("${myVar}") private String myVar;
...
}

сама подцепит при старте приложения нужный параметр из файла конфигурации либо переменных среды окружения. Это принятый в индустрии подход для загрузки конфигурации при старте.
Но конечно, можно написать и ручную загрузку)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы