【发布时间】:2023-02-10 08:44:38
【问题描述】:
(在我的回答中帮助在 spring boot 中创建多个数据库)
我想为不同的游戏制作一个 spring boot 应用程序。每个游戏的数据都放在一个单独的数据库中。我一直在尝试将辅助数据库连接到我现有的应用程序,但控制器/存储库一直在使用主数据库。
这是第二个数据库的控制器的样子:
@RestController
@RequestMapping("/valorant")
@CrossOrigin
public class UserController {
@Autowired
private UserRepository userRepository;
@Autowired
@Qualifier("valorantDataSource")
private DataSource valorantDataSource;
@GetMapping("/users")
public Iterable<User> getUsers() {
return userRepository.findAll();
}
}
这是应该从第二个数据库中获取数据的存储库:
@Repository
@Qualifier("valorantDataSource")
public interface UserRepository extends JpaRepository<User, Long> {
}
我在不同的文件中定义了数据源。 (将 .url()、.username() 和 .password() 添加到 datasourcebuilder 没有帮助)
@Configuration
public class DatasourceConfig {
@Primary
@Bean(name = "apexDataSource")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "valorantDataSource")
@ConfigurationProperties(prefix = "spring.second-datasource")
public DataSource valorantDataSource() {
return DataSourceBuilder.create()
.build();
}
}
# First database
spring.datasource.jdbc-url=jdbc:mysql://localhost:3306/apex
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# Second database
spring.second-datasource.jdbc-url=jdbc:mysql://localhost:3306/valorant
spring.second-datasource.username=root
spring.second-datasource.password=
spring.second-datasource.driver-class-name=com.mysql.cj.jdbc.Driver
当我使用 postman 访问 http://localhost:8080/valorant/users 时,出现错误:
java.sql.SQLSyntaxErrorException: 表 'apex.user' 不存在
所以看起来应用程序正在尝试查找错误的数据库。
提前致谢。
【问题讨论】:
标签: java mysql spring spring-boot