Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。提供了完善的认证机制和方法级的授权功能。是一款非常优秀的权限管理框架。它的核心是一组过滤器链,不同的功能经由不同的过滤器。这篇文章就是想通过一个小案例将Spring Security整合到SpringBoot中去。要实现的功能就是在认证服务器上登录,然后获取Token,再访问资源服务器中的资源。
二、什么是循环依赖循环依赖直白点就是发生在两个类,你引用我,我引用你的状态,如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7kZxzdxV-1651995429287)(https://upload-images.jianshu.io/upload_images/24195226-3550233330ca6ab9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
三、如果不依赖于Spring自己解决循环依赖如何解决以上图为例,假设,我们能够创建完成AService之后,放置到到一个缓存中,再去注入属性!每次注入属性的时候,所需要的属性值都从缓存中获取一遍,缓存中没有再去创建不就解决了?如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CxvS1yip-1651995429288)(https://upload-images.jianshu.io/upload_images/24195226-10efdbe09cb9cba8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
总结一下上面的流程:
- AService创建完成后将自己加入到二级缓存,然后开始注入属性
- 发现AService依赖BService于是先查询一级缓存是否有数据一级缓存没有就查询二级缓存,有就返回,没有就创建BService
- 缓存中没有,开始实例化BService,然后注入内部属性!
- 注入内部属性时发现依赖AService,于是先查询一级缓存是否有数据一级缓存没有就查询二级缓存,有就返回,没有就创建,很显然,二级缓存是有数据的。于是从二级缓存取出AService注入到BService。
- BService创建完成后将自己从二级缓存挪到一级缓存,并返回。
- AService获取到BService后,注入到自己的属性中并把自己从二级缓存挪的一级缓存,返回AService!
- 至此,循环依赖创建完成!
那么有了上面的思路,我们如何用代码实现一遍我们的逻辑呢?
总结一般像这样的大企业都有好几轮面试,所以自己一定要花点时间去收集整理一下公司的背景,公司的企业文化,俗话说「知己知彼百战不殆」,不要盲目的去面试,还有很多人关心怎么去跟HR谈薪资。
这边给大家一个建议,如果你的理想薪资是30K,你完全可以跟HR谈33~35K,而不是一下子就把自己的底牌暴露了出来,不过肯定不能说的这么直接,比如原来你的公司是25K,你可以跟HR讲原来的薪资是多少,你们这边能给到我的是多少?你说我这边希望可以有一个20%涨薪。
最后再说几句关于招聘平台的,总之,简历投递给公司之前,请确认下这家公司到底咋样,先去百度了解下,别被坑了,每个平台都有一些居心不良的广告党等着你上钩,千万别上当!!!
Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。
还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书。
实战电子书。
[外链图片转存中…(img-m4Hoi7ZD-1651995429288)]



