gpt4 book ai didi

spring boot 动态更改数据库

转载 作者:行者123 更新时间:2023-12-03 02:13:24 27 4
gpt4 key购买 nike

如何在运行 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 xml 的解决方案。这是我当前的数据库配置。

@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 在运行时根据某些条件选择特定的数据源

请看一下这个示例:

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

关于spring boot 动态更改数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37434518/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com