Ole*_*Ole 5 java java-8 spring-data-jpa
查看使用Optional数据库调用首先加载可选项然后映射到Spring安全UserDetails实例的示例用法.代码如下所示:
Optional<User> user = userRepository.findByName(username);
user.orElseThrow(()-> new UsernameNotFoundException("Ahhh Shuckkkks!!!");
return user.map(CustomUserDetails::new).get();
Run Code Online (Sandbox Code Playgroud)
在最后一行中,该调用是相等的return new CustomUserDetails(user.get()).
也有人知道是否有更短的流动方式来编写上面的例子?
JB *_*zet 10
是的,这是等价的.但代码应该写成
return userRepository.findByName(username)
.map(CustomUserDetails::new)
.orElseThrow(()-> new UsernameNotFoundException("Ahhh Shuckkkks!!!"));
Run Code Online (Sandbox Code Playgroud)
这避免了一个无用的变量,在最后隔离了特殊情况,并避免了令人讨厌的调用get(),这只能保证在这里工作正常,因为你orElseThrow()之前已经调用过.
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |