2016-05-25 5 views
2

Spring Bootアプリケーションを実行しているときにデータベースを変更するにはどうすればよいですか? RestControllerが接続パラメータで要求を受け取ったときに別のデータベースに接続する必要があります。ここで私のRestControllerの一部です。spring boot動的にデータベースを変更する

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

物をクリアする。私は春と春のブートに新しいです。だから私は古いファッションの春の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; 
    } 
} 

答えて

関連する問題