対象
- spring-security-config 5.2.0.RELEASE
何が非互換性か
WebSecurityConfigurerAdapter の configure(WebSecurity) メソッドの定義から、 throws Exception が削除されています。
コミット差分はこちら。WebSecurityConfigurerAdapter 以外にも、同様の変更がされたクラスがいっぱいありますね。
これにより、5.1.xから5.2.0.RELEASEにライブラリをアップグレードすると、WebSecurityConfigurerAdapter のサブクラスでコンパイルエラーが発生します。オーバーライド元に throws Exception が無いからです。
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// このメソッドでコンパイルエラーが発生
@Override
public configure(WebSecurity web) throws Exception {
// ...
}
}
[2019/11/07追記] Spring Security 5.2.1.RELEASEで、削除された
throws Exceptionが元に戻りました! -> コミット履歴
対策
configure(WebSecurity) メソッドから、 throws Exception を削除しましょう。
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// これでコンパイルエラーは発生しない
@Override
public configure(WebSecurity web) {
// ...
}
}
前述のコミットログによると、他にも多数のメソッドから throws Exception が削除されているようです。
これらのメソッドを利用している場合は、すべて同様の作業が必要になります。
[2019/11/07追記] 5.2.0でこの対策をされた方は、5.2.1にアップグレードされた際、
throws Exceptionを追加する必要は無いはずです。
しかし・・・
こーゆーことはしないでほしいですねえ。。。
Spring SecurityのIssueに上げてあります。