下面是SpringBoot2.0.3打印默认数据源为HikariDataSource(null)问题的完整攻略。
问题描述
在使用SpringBoot2.0.3版本时,如果使用了默认的数据源,会在启动程序时输出类似于“SpringBoot2.0.3打印默认数据源为 HikariDataSource (null)”的提示信息,其中null在不同的操作系统和环境下可能出现不同的值。这可能会让开发者感到困惑和疑惑,不知道出现这种情况的原因和解决方法。
解决方法
经过研究和测试,发现这个问题可能是由于HikariDataSource的日志输出导致的。 Spring Boot 2.x 默认的数据源使用的是HikariDataSource,所以输出信息中会涉及到HikariDataSource。
而这个 null 就代表着当前的数据库连接池对象没有被初始化或尚未加载相关的配置信息。
解决这个问题的方法有以下几种:
1. 关闭debug日志
在application.properties文件中设置日志输出级别为info,可以关闭debug日志输出,这样就不会看到类似于“HikariDataSource (null)”的提示信息了。
logging.level.root=info
logging.level.org.springframework.web=info
2. 指定正确的数据库连接配置
保证application.properties文件中指定的数据库连接信息是正确的,确保使用正确的配置启动程序。示例:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
示例
以下是一段在SpringBoot2.0.3中使用默认数据源时出现问题的示例:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
运行后,会看到以下输出信息:
2018-09-16 17:26:21.417 INFO 14092 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication on KWT-PC with PID 14092 (C:\Users\kkou\IdeaProjects\demo\target\classes started by kkou in C:\Users\kkou\IdeaProjects\demo)
2018-09-16 17:26:21.420 DEBUG 14092 --- [ main] com.example.demo.DemoApplication : Running with Spring Boot v2.0.3.RELEASE, Spring v5.0.7.RELEASE
2018-09-16 17:26:21.431 INFO 14092 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to default profiles: default
2018-09-16 17:26:21.429 DEBUG 14092 --- [ main] .t.TomcatWebSocketTestServerContainer : Web socket server started on port: 32989
2018-09-16 17:26:21.432 DEBUG 14092 --- [ main] i.n.u.i.PlatformDependent0 : -Dio.netty.noUnsafe:true (io.netty.util.internal.PlatformDependent)
2018-09-16 17:26:21.433 DEBUG 14092 --- [ main] i.n.util.internal.NativeLibraryLoader : Unable to load the library 'netty-tcnative-windows-x86_64', trying other loading mechanism.
2018-09-16 17:26:21.443 WARN 14092 --- [ main] .c.l.ClasspathLoggingApplicationListener : Logging environment value 'info' cannot be parsed using Logback. Logging levels will be incorrectly parsed.
2018-09-16 17:26:21.446 INFO 14092 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 1.739 seconds (JVM running for 2.262)
2018-09-16 17:26:29.450 INFO 14092 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
其中有一行输出信息是:
2018-09-16 17:26:21.446 INFO 14092 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 1.739 seconds (JVM running for 2.262)
2018-09-16 17:26:29.450 INFO 14092 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
可以看到没有具体的错误信息,只有HikariDataSource(null)的输出。这时可以按照上述方法进行解决。
另一个示例,可以通过指定数据库连接配置来解决这个问题。下面是一个与MySQL数据库连接的示例,配置文件的名称为application.properties:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/testdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=myPassword
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=1
spring.datasource.druid.min-idle=1
spring.datasource.druid.max-active=10
spring.datasource.druid.filters=stat,wall,log4j
其中,我们指定了MySQL数据库的连接配置信息。这样,在启动应用程序时,就不会出现HikariDataSource(null)的输出了。
总结
通过以上方法,我们可以有效地解决SpringBoot2.0.3打印默认数据源为 HikariDataSource(null)问题。如果您遇到了类似的问题,希望以上的解决方法能够帮到您。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot2.0.3打印默认数据源为 HikariDataSource (null)问题 - Python技术站