boot inicial mudar banco de dados dinamicamente

Como altero o banco de dados ao executar o aplicativo Spring Boot? Preciso conectar outro banco de dados quando o RestController receber solicitação com parâmetros de conexão. Aqui está parte do meu RestController.

@RequestMapping(value = "/change",method = RequestMethod.GET)
public ResponseEntity<?> change(@RequestParam String ip, @RequestParam String port,
                                @RequestParam String dbname, @RequestParam String username,
                                @RequestParam String password ){
    //change datasource here
    return new ResponseEntity<>(HttpStatus.OK);
}

Para limpar as coisas. Eu sou novo no Spring and Spring Boot. Então, eu gostaria de ver uma solução sem xmls antigos da Primavera. Aqui está minha configuração atual do banco de dados.

@Configuration
@EnableJpaRepositories("su.asgor.dao")
@EnableTransactionManagement
@ComponentScan("su.asgor")
public class DatabaseConfig {

    @Bean
    public DataSource dataSource() {
        BasicDataSource ds = new BasicDataSource();
        ds.setUrl("jdbc:postgresql://localhost:5432/portal74");
        ds.setDriverClassName("org.postgresql.Driver");
        ds.setUsername("postgres");
        ds.setPassword("system");

        ds.setInitialSize(30);
        ds.setMinIdle(30);
        ds.setMaxIdle(60);
        ds.setTimeBetweenEvictionRunsMillis(30000);
        ds.setMinEvictableIdleTimeMillis(60000);
        ds.setTestOnBorrow(true);
        ds.setValidationQuery("select version()");
        return ds;
    }

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(dataSource());
        em.setPackagesToScan("su.asgor.model");
        em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());

        Properties hibernateProperties = new Properties();
        hibernateProperties.put("hibernate.dialect","org.hibernate.dialect.PostgreSQL9Dialect");
        hibernateProperties.put("hibernate.show_sql","false");
        hibernateProperties.put("hibernate.hbm2ddl.auto","update");

        em.setJpaProperties(hibernateProperties);
        return em;
    }

    @Bean
    public PlatformTransactionManager transactionManager() {
        JpaTransactionManager manager = new JpaTransactionManager();
        manager.setEntityManagerFactory(entityManagerFactory().getObject());
        return manager;
    }
}

questionAnswers(1)

yourAnswerToTheQuestion