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;

}

}

回答:

您可以使用 AbstractRoutingDataSourcedatasource根据某些条件在运行时选择特定的对象。

请看一下这个样本:

https://spring.io/blog/2007/01/23/dynamic-datasource-

routing/

以上是 Spring Boot动态更改数据库 的全部内容, 来源链接: utcz.com/qa/417568.html

回到顶部