spring-boot - 为什么我在使用 HikariCP 运行此代码时得到一个空数据源?
问题描述
我正在运行此代码来设置我的配置并获取 DataSource 以访问数据库,但是当我调用 ds.getDataSource() 时,我得到一个空值。我在那里想念什么?
private static HikariConfig config = new HikariConfig();
private static HikariDataSource ds;
static {
config.setJdbcUrl("jdbc:mysql://localhost:5656/...");
config.setUsername("");
config.setPassword("");
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
config.setMaximumPoolSize(10);
config.setConnectionTimeout(30000);
config.setIdleTimeout(600000);
config.setMaxLifetime(1800000);
ds = new HikariDataSource(config);
}
public static DataSource getDataSource() {
return ds.getDataSource();
}
解决方案
好的,所以我不熟悉 SpringBoot 的这方面,对于任何有同样问题的人来说,这是我所做的@Autowired
工作:
我需要DataSource
在我QuickSearchService
定义为 a 的类中使用@Service
. 在该服务中,我可以使用以下命令调用 HikariCP DataSource @Autowired
:
@Service
public class QuickSearchService{
@Autowired
private DataSource ds;
...
}
然后,当我需要使用该服务时@Autowired
,它也会随叫随到:
public class UsingService {
@Autowired
private QuickSearchService qss;
...
}
最后我不得不@ComponentScan
在应用程序主类上使用来告诉服务器找到需要自动装配的组件:
@ComponentScan(basePackages = {"example.services", ...})
public class DemoApplication {
public static void main(String[] args){
...
}
}
然后我可以在 application.properties 中配置 DataSource。
推荐阅读
- python - 在 google colabs python 中替换 2.5.0 版 tensorflows 占位符的最佳方法是什么?
- reactjs - 过滤列表时如何保留选中的值
- javascript - 如何在币安 api 中设置买单
- excel - 如何使用 Randomize 使我的 UDF 成为非易失性?
- react-native - 使用 React Navigation 测试 React Native 的问题
- tkinter - Tkinter 避免/禁用窗口移动(或其拖动)
- python - 通过 PID 获取脚本名称
- ffmpeg - 如何使用 ffmpeg 从 SDP 录制视频?
- macos - 如何修复 macOS 上的 VS Code“模块...针对不同的 Node.js 版本编译”错误?
- android - 适用于 android-R 和旧版 Android API 30 的系统映像