有疑问的源代码:
@Configuration
public class PresenceEventListener {
@EventListener
public void handleSessionConnected(SessionConnectEvent event) {
SimpMessageHeaderAccessor headers = SimpMessageHeaderAccessor.wrap(event.getMessage());
Principal principal = headers.getUser();
/* custom logic with principal.getName() */
}
@EventListener
public void handleSessionDisconnect(SessionDisconnectEvent event) {
SimpMessageHeaderAccessor headers = SimpMessageHeaderAccessor.wrap(event.getMessage());
Principal principal = headers.getUser();
/* custom logic with principal.getName() */
}
}
在我能找到的所有示例中,这段代码或多或少都相同。 Here's one reference...
通过从spring-boot v1.5升级到v2,Findbugs抱怨.getName()
,因为principal
可能是null
,并且未被选中。
这是因为从v5开始,spring-messaging已将方法SimpMessageHeaderAccessor#getUser标记为@Nullable
。
我的问题是应该如何正确处理? (即#getUser
返回null
时)
代码是否应该引发异常?没做什么?
在这种情况下,用户实际上是null
是什么意思?
可以认为这是黑客尝试吗?
Principal principal = headers.getUser();
if (principal == null) {
// what should happen here ?
}
谢谢!