Origem de dados dinâmica no JPA de inicialização do Spring

Eu tenho um aplicativo que precisa se conectar a poucos esquemas diferentes d, mas tudo do mesmo tipo (ORACLE). A decisão de qual esquema vem da interface do usuário.

se o Usuário selecionar o esquema1, a entidade deverá persistir no Esquema1; se selecionar outro, deverá estar no outro esquema selecionado.

Estou usando o Spring boot + Hibernate com a dependência "spring-boot-starter-data-jpa"

Eu criei uma classe de fonte de dados como abaixo para poder alterar o "nome do esquema" no objeto de fonte de dados todas as vezes antes de chamar a camada de dados.

@Component
public class SchemaDatasource extends AbstractDataSource {

    private String schemaName;

    @Autowired
    private DSManager dsm;

    public void setSchemaName(String schemaName) {
        this.schemaName = schemaName;
    }

    @Override
    public Connection getConnection() throws SQLException {
        if (schemaName!= null)
            return dsm.getConnection(schemaName);
        else
            return null;
    }

    @Override
    public Connection getConnection(String username, String password) throws SQLException {
        if (schemaName!= null)
            return dsm.getConnection(schemaName);
        else
            return null;
    }

}

Meu problema é durante a inicialização, o "HibernateJpaAutoConfiguration" tenta criar a sessionfactory. Durante a criação, ele tenta verificar a conexão com a fonte de dados. Mas como schemaName é nulo na inicialização, meu SchemaDatasource retorna a conexão nula com a falha na inicialização do aplicativo.

existe uma maneira de lidar com isso. Estou esperando semelhante ao SessionFactory sem noções de hibernação.

No caso de RoutingDatasource também, eu tenho que definir defaultDatasource.

Spring boot version: 1.5.9.RELEASE

questionAnswers(1)

yourAnswerToTheQuestion