azerphoenix
@azerphoenix
Java Software Engineer

Как корректно создавать Spring Beans динамически?

Доброго времени суток!
Имеется библиотека graphhopper для построения маршрутов.
https://github.com/graphhopper/graphhopper/
Можно создавать бины на этапе поднятия контекста приложения и передать нужный path карты, которую библиотека должна вычитать и подготовить файлы для работы с ней (создать кеш). В данном случае проблем с созданием бина нет. Достаточно создать бин со scope Singleton, который будет работать с заранее настроенной картой.
Что делать, если нужны разные бины для работы с разными картами? Если использовать scope ProtoType, то можно получить несколько инстансов бина но опять-таки это будет на этапе поднятия контекста приложения. Но пользователь должен иметь возможность из админки скачивать карты и соответственно, нужно динамически добавлять бины для работы с выбранной и скачанной им картой.
Отсюда вопрос - нужно ли создавать бины динамически или есть другие варианты решения вопроса? И если да, то что конкретно нужно хранить в БД и на каком этапе стоит вычитать созданные бины из БД?
Благодарю за ответы!

P.S. Как в аргументы метода добавления динамического бина передавать String path (путь к карте).
  • Вопрос задан
  • 206 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Автор вопроса, куратор тега Java
Java Software Engineer
Применительно к данной задаче, которую я описал выше не пришлось созадвать бины динамически.
Вместо этого было принято решение написать микросервисное приложение, в котором каждый из стран / городов для грапхоппера является отдельным микросервисом работающим внутри докера.
Таким образом надобность в создании бинов в runtime отпала.

Если вдруг кому-то все же понадобится создавать бины динамически, то можете глянуть на это решение:
https://stackoverflow.com/questions/57157396/how-t...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@freeg0r
.. some dude ..
Если использовать scope ProtoType, то можно получить настраиваемые бины, но опять-таки это будет на этапе поднятия контекста приложени

откуда вы этот бред взяли?
A bean with prototype scope will return a different instance every time it is requested from the container
Каждый раз будет создаваться новый бин при обращении за таким бином.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы