Spring Boot动态更改数据库
如何在运行Spring
Boot应用程序中更改数据库?当RestController得到带有连接参数的请求时,我需要连接另一个数据库。这是我的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);
}
要清除的东西。我是Spring和Spring Boot的新手。所以我想看看没有老式Spring xmls的解决方案。这是我当前的数据库配置。
@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;
}
}
回答:
您可以使用 AbstractRoutingDataSource
它datasource
根据某些条件在运行时选择特定的对象。
请看一下这个样本:
https://spring.io/blog/2007/01/23/dynamic-datasource-
routing/
以上是 Spring Boot动态更改数据库 的全部内容, 来源链接: utcz.com/qa/417568.html