Spring Boot bootrun启动无限卡住问题求助
配置信息
application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/springserverdb?createDatabaseIfNotExist=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect spring.datasource.username=master spring.datasource.password=j21983d23d9sad+o spring.jpa.hibernate.ddl-auto=update
build.gradle
plugins { java id("org.springframework.boot") version "3.2.2" id("io.spring.dependency-management") version "1.1.4" } group = "com.setserver" version = "0.0.1-SNAPSHOT" java { sourceCompatibility = JavaVersion.VERSION_17 } repositories { mavenCentral() } dependencies { implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.springframework.boot:spring-boot-starter-web") testImplementation("org.springframework.boot:spring-boot-starter-test") implementation("mysql:mysql-connector-java:8.0.33") } tasks.withType<Test> { useJUnitPlatform() }
启动日志关键片段
at com.setserver.setserver.SetserverApplication.main(SetserverApplication.java:10) ~[main/:na]
2024-02-20T18:58:51.185+01:00 WARN 15760 --- [ main] org.hibernate.orm.deprecation : HHH90000025: MySQL8Dialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)
2024-02-20T18:58:51.186+01:00 WARN 15760 --- [ main] org.hibernate.orm.deprecation : HHH90000026: MySQL8Dialect has been deprecated; use org.hibernate.dialect.MySQLDialect instead
2024-02-20T18:58:51.390+01:00 INFO 15760 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
2024-02-20T18:58:51.394+01:00 INFO 15760 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2024-02-20T18:58:51.419+01:00 WARN 15760 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2024-02-20T18:58:51.640+01:00 INFO 15760 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path ''
2024-02-20T18:58:51.644+01:00 INFO 15760 --- [ main] c.s.setserver.SetserverApplication : Started SetserverApplication in 3.057 seconds (process running for 3.289)
解决方案
移除废弃的Hibernate方言配置
日志明确提示MySQL8Dialect无需手动指定且已废弃,直接删除spring.jpa.properties.hibernate.dialect这一行,Hibernate会自动根据MySQL版本选择合适的方言。修复密码中的URL特殊字符
密码里的+属于URL特殊字符,未编码会导致连接解析异常,修改密码配置为:spring.datasource.password=j21983d23d9sad%2Bo替换MySQL驱动依赖
Spring Boot 3.x版本不再推荐使用旧的mysql-connector-java,改用官方更新的mysql-connector-j,修改build.gradle中的依赖:implementation("com.mysql:mysql-connector-j")依赖版本会由Spring Boot的dependency-management自动管理,无需手动指定版本号,避免版本冲突。
显式关闭Open-in-View特性
关闭默认开启的open-in-view,避免潜在的资源占用和延迟,在application.properties中添加:spring.jpa.open-in-view=false验证应用状态
启动后访问http://localhost:8080,空白项目会返回404页面,这是正常现象。如果进程仍无响应,检查IntelliJ控制台的完整日志,或查看系统CPU、内存占用,确认是否存在数据库连接池初始化阻塞问题。
内容的提问来源于stack exchange,提问作者NextInima Nai

