上兩篇文章使用兩種不同的撰寫方式來實現功能,接下來敘述兩者的差異。
1.語法風格的不同:
* 第一種寫法使用傳統的鏈式方法調用風格,其中包含了許多 and() 方法來將配置連接起來。
* 第二種寫法則使用了Lambda表達式(例如, authorizeHttpRequests((authorize) -> {...})),這種風格相對於傳統的寫法來說更加簡潔和現代化。
and()的使用:
requestMatchers的配置:
第一種寫法的 requestMatchers("/api/v1/auth/") 允許所有請求通過,而第二種寫法的requestMatchers("/error/", "/hello") 則允許這兩個特定路徑的請求,這是不同的安全策略。根據實際需求,你可以選擇不同的配置。
第二種寫法更具可讀性,因為它使用了Lambda使得結構更加清晰,特別是在處理較多的配置時,這種方式能過度簡化代碼,便於維護。
總結來說,第二種寫法是對第一種寫法的一種現代化和簡化,並且減少了 and() 的使用,使得代碼視覺上更清晰易懂。這種風格也已成為Spring Security 5及以後版本的推薦寫法。