本站無留言功能,有問題或發現錯誤,歡迎到twitter戳我,謝謝

正在練習把玩的 Spring Boot 用的是 2.5.6,剛剛升級到 3.0.2,這邊隨手記錄必須的改動

升級 Java

換上 3.0.2 之後,Java 必須要升級到 17 以上,我原本是用 Java 11,所以 IDE 跟 Console 的 JDK 都換成了 19

升級 Gradle

JDK 換成 19 之後跑 gradle 會遇到莫名的 PermittedSubclasses requires ASM9

我把原本的 gradle-7.2 換成 gradle-7.6 就沒事了

更換 jakarta 的 package name

Spring Boot 3.0 Release Note 有說 Jakarta Persistence 為 3.1

Wiki 說明 Jakarta Persistence 3.0 之後把 package name 從 javax.persistence 換成 jakarta.persistence,因此要做類似的修改

1
2
3
4
5
6
7
8
+import jakarta.persistence.Column
+import jakarta.persistence.Entity
+import jakarta.persistence.Id
+import jakarta.persistence.Table
-import javax.persistence.Column
-import javax.persistence.Entity
-import javax.persistence.Id
-import javax.persistence.Table

更新 Spring Security 的語法

  • authorizeRequest 已經 deprecated
  • antMatchers 要換成 requestMatchers

另外有個比較雷的地方,原本我只要用 @EnableWebSecurity 就能注入 Security 相關的 Bean,更新之後要再加上 @Configuration 否則不會有效果

前後差異如下

1
2
3
4
5
6
7
8
9
10
11
12
13
+@Configuration
@EnableWebSecurity
class AppSecurityConfig {

@Bean
fun createFilterChain(http: HttpSecurity): SecurityFilterChain {
// public
http
- .authorizeRequests()
- .antMatchers("/").permitAll()
+ .authorizeHttpRequests()
+ .requestMatchers("/").permitAll()
....

開發期略過 h2-console

如果你有用 h2-console,而且在開發期想要避開 spring security,可以利用 toH2Console

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import org.springframework.boot.autoconfigure.security.servlet.PathRequest.toH2Console
...

fun createFilterChain(http: HttpSecurity): SecurityFilterChain {
http.headers().frameOptions().sameOrigin()

http.csrf().ignoringRequestMatchers(toH2Console())

http.authorizeHttpRequests()
.requestMatchers(toH2Console())
// .requestMatchers(antMatcher("/h2-console/**")) // either this one is fine
.permitAll()

.....

return http.build()
}
Spring Boot OAuth 如何使用 Mock Server ← Prev Next → 本站已拿掉 Google Analytics 換成 Matomo