运行 此代码使用 HikariCP 时,为什么我得到一个空数据源?
Why do i get a null DataSource when running this code using HikariCP?
我 运行 此代码用于设置我的配置并获取数据源以访问数据库,但是当我调用 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
工作:
我需要在我定义为 @Service
的 QuickSearchService
class 中使用 DataSource
。在该服务中,我可以使用 @Autowired
:
调用 HikariCP 数据源
@Service
public class QuickSearchService{
@Autowired
private DataSource ds;
...
}
然后当我需要使用服务时 @Autowired
它也随叫随到:
public class UsingService {
@Autowired
private QuickSearchService qss;
...
}
最后我不得不在主应用程序 class 上使用 @ComponentScan
来告诉服务器找到需要自动装配的组件:
@ComponentScan(basePackages = {"example.services", ...})
public class DemoApplication {
public static void main(String[] args){
...
}
}
然后我可以在 application.properties.
中配置 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
工作:
我需要在我定义为 @Service
的 QuickSearchService
class 中使用 DataSource
。在该服务中,我可以使用 @Autowired
:
@Service
public class QuickSearchService{
@Autowired
private DataSource ds;
...
}
然后当我需要使用服务时 @Autowired
它也随叫随到:
public class UsingService {
@Autowired
private QuickSearchService qss;
...
}
最后我不得不在主应用程序 class 上使用 @ComponentScan
来告诉服务器找到需要自动装配的组件:
@ComponentScan(basePackages = {"example.services", ...})
public class DemoApplication {
public static void main(String[] args){
...
}
}
然后我可以在 application.properties.
中配置 DataSource