下面是一个使用Optional
的示例,其中optional首先通过数据库调用进行加载,然后映射到Spring安全性UserDetails
实例。代码如下:
Optional<User> user = userRepository.findByName(username);
user.orElseThrow(()-> new UsernameNotFoundException("Ahhh Shuckkkks!!!");
return user.map(CustomUserDetails::new).get();
在最后一行,该调用是否等于
return new CustomUserDetails(user.get())
。此外,有人知道是否有更短、更流畅的方法来编写上述示例吗?
userRepository.findByName(username)
获取的用户对象,如果找不到该用户则抛出UsernameNotFoundException
异常并返回 "Ahhh Shuckkkks!!!"。最终将该用户对象传递给CustomUserDetails
的构造函数来创建一个新的CustomUserDetails
对象。 - Alexis C.