Имеется 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, то придется указывать тип, пробрасывать параметры, а мне не хотелось бы этим заниматься.