LINUX.ORG.RU

Изменить scope стандартного бина

 , ,


0

1

Имеется spring boot приложение, работающее с различными БД через JPA2 (hibernate, spring-data).

Во время работы приложения сервера баз данных могут меняться (как адреса, так и сами субд), должна выполняться валидация существующих БД средствами hibernate и создание схемы по желанию пользователя.

То есть задание статических параметров DataSource не годится. spring.jpa.hibernate.ddl-auto анализируется при создании бина то ли entityManagerFactory, то ли entityManagerFactoryBuilder, если мне не изменяет память.

Вопрос первый: Нормальный ли это подход, если я изменю scope этого бина с singleton на prototype и при изменении параметров подключения просто буду получать новый экземпляр этого класса?

Минус, который я вижу: нельзя будет использовать Autowired в singleton-бинах для бинов производных от entityManagerFactory, в том числе и PersistentContext. Придется получать эти бины через мой бин, производящий изменения в DataSource и пересоздание entityManagerFactory.

Вопрос второй: Как мне используя spring-boot с конфигурированием контекста через Java-класс изменить только scope для конкретного стандартного бина? Если описывать в Java-классе конфигурации этот бин, задавая через аннотации scope, то придется указывать тип, пробрасывать параметры, а мне не хотелось бы этим заниматься.


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.