我想在Spring Boot中创建一个无状态的bean,使用户能够连接到特定的数据库,所以我从这段代码开始,但是对于spring boot我还是很陌生。
@Bean
@Primary
public DataSource helloDataSource() {
return DataSourceBuilder.create()
.username("myUsername")
.password("myPassword")
.driverClassName("myDBDriver")
.build();
}
那么使该代码正常工作并连接到任何数据库(也是远程数据库)的最佳方法是什么?
答案 0 :(得分:1)
有几种方法可以完成此操作。我首选的方法之一是通过属性文件提供数据源的配置。这是postgresql的示例属性文件:
pg.datasource.url=jdbc:postgresql://db-server-bar:5432/app-db
pg.datasource.username=root
pg.datasource.password=toor
pg.datasource.driver-class-name=org.postgresql.Driver
现在您可以为每个数据源创建配置类:
public class BarDbConfig {
@Bean(name = "pgDataSource")
@ConfigurationProperties(prefix = "pg.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "barEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean
barEntityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier("pgDataSource") DataSource dataSource
) {
return
builder
.dataSource(dataSource)
.packages("com.app.domain")
.persistenceUnit("pg")
.build();
}
}
有关详细教程,请参阅this tutorial。
在某些情况下,您想在运行时切换数据库。在这种情况下,您可以使用名为AbstractRoutingDataSource
的东西。有关如何使用此功能的详细教程,请参见Spring's official blog site。