先上一张图,以下图1所示,SecurityContext只有俩个方法,即getAuthentication()和setAuthentication(),以下:.net
图1 SecurityContext的类图blog
图2 SecurityContextHolderget
而SecurityContextHolder则,保存的是SecurityContext,最常使用的就是SecurityContextHolder的getContext()方法。博客
SecurityContextHolder、SecurityContextHolderStrategy、SecurityContext紧密联系,咱们虽然调用的是SecurityContextHolder.getContxt(),但它却委托给了SecurityContextHolderStrategy,SecurityContext是保存在SecurityContextHolderStrategy中的。类图以下图3所示,此图来自于《Pro Spring Security》的Chapter3,建议读者阅读原文:it
图3 SecurityContextHolder、SecurityContextHolderStrategy、SecurityContext的类图io
SecurityContextHolderStrategy,能够看个人这篇博客。方法
SecurityContext的时序图以下图4:im
图4 SecurityContext的时序图d3