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;
}
}