项目一众筹网08_01_项目里面如何加入SpringSecurity怎么查看源码找不到bean异常

Posted 平凡加班狗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目一众筹网08_01_项目里面如何加入SpringSecurity怎么查看源码找不到bean异常相关的知识,希望对你有一定的参考价值。

系列文章目录

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

13-加入SpringSecurity环境

加入SpringSecurity环境,第一步就是加入依赖


参考源码

拿到父工程里面去


加入到父工程里面之后就没有了吗,其实还有要考虑的,
那就是什么地方用,这里就是哪个工程用?

父工程

一样的复制粘贴一下,只是这个子工程里面不用带版本号,仅此而已


	<filter>
		<filter-name>springSecurityFilterChain</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>springSecurityFilterChain</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

自己复制一下源码即可
然后使用注解开发模式,在配置类里面加2个注解
如下新建1个类,代码如下

这里抛出一个问题

区别如下:


所以最后我们选择哪个呢?
我们应该在SpringMvc的IOC容器里面去扫描,
因为浏览器直接访问的不是Handler就是view-controller
我们想控制的也是浏览器请求



14-找不到bean异常-分析问题

运行项目起来看一下,
注意直接访问登录接口(http://localhost:8080/atcrowdfunding02-admin-webui/admin/to/login.ht)会比较稳,
而不是去访问页面,因为页面可能因为未登录导致不能访问

此时运行项目会报这个(找不到bean)错,
但是不要慌,因为这个是springSecurity加入到项目里面首先要解决的一个问题

提出(发现)问题,分析问题、解决问题
其实就是找不到这个:

明明有,为什么找不到呢,这是因为查找bean需要到IOC容器里面去找
我们分析一下



因为此时springMvc的容器还没有创建好,所以找不到
如下:


我们后面来想办法
看看怎么解决

15-找不到bean异常-Debug看源码

怎么查看源码

第一步,要改一下tomcat的启动时间,默认的45秒肯定是不够的

打开源码有两种方法,一种是找到后,然后按住Ctrl键,点进去,

还有一种就是你得记得住类名,然后如下按Ctrl+shift+T,然后输入这个框架类的名字

Ctrl+O调出大纲


根据源码可知,如果wac是null,后面就不执行了,所以找不到就放弃了,源码里面没有else

打个断点进来

源码本身不难,只是不是我们自己控制的,所以有些人会觉得看源码非常枯燥
不能用心去看源码,其实是有点吃亏的,
不过也能理解,毕竟不是自己整的,不是按照自己的想法来的,需要去要强行适应
继续跟着源码一步一步调试往下走
去体会下面这条线是怎么走的

16-找不到bean异常-看源码

(略)

17-找不到bean异常-解决办法 一 把两个IOC容器合二为一


这句话怎么理解?

具体怎么做?



由于这种方案会破坏现有程序的结构,所以这里我们推荐用第二种方式,
看看能不能保持结构不变的情况下,又把这个问题完美的解决了

18-找不到bean异常-解决办法二-改源码


上面这里注释掉,还有一个地方
下面看具体操作
改源码,可参考前面说的
这里就不那么详细说了前期的步骤了,直接看具体改的地方

第一个地方:

第二个地方:


这个时候再运行项目,就会发现被SpringSecurity控制住了,几乎全部拦截了,
必须要登录被SpringSecurity判断了权限后才能看到我们的项目,
下面就是放行登录页和静态资源了

19-SpringSecurity原理

20-目标1-放行登录页和静态资源(下一篇)

总结

今日总结
1、项目里面加入springSecurity的依赖
2、加入依赖之后解决找不到bean的问题,需要改源码
3、在项目里面SpringSecurity环境搭好之后,需要放行登录页和静态资源,因为这部分是不需要权限控制的
4、我发现项目加入了SpringSecurity环境之后,启动速度变慢了很多,我猜测,目前很多公司的项目启动速度比较慢可能跟配置了权限管理系统有一定的关系

这里我们卖个关子,用最终版的代码(还没讲)和现在的代码,启动速度是相差特别大的
575324 - 34759=540,565 相当于 540秒 差不多10分钟,好家伙,启动一个项目10分钟 这不优化太恐怖了
可以得知肯定是可以优化的,并且优化后的启动速度只是现在速度的零头 差距非常非常明显

剩余部分

21-目标2-内存登录-调整表单
22-目标2-内存登录-进行配置
23-目标3-退出登录
24-目标4-数据库登录-思路
25-目标4-数据库登录-查询角色和权限信息
26-目标4-数据库登录-创建SecurityAdmin
27-目标4-数据库登录-根据账号查询Admin
28-目标4-数据库登录-完成UserDetailsService类
29-目标4-数据库登录-使用UserDetailsService

以上是关于项目一众筹网08_01_项目里面如何加入SpringSecurity怎么查看源码找不到bean异常的主要内容,如果未能解决你的问题,请参考以下文章

项目一众筹网07_01_SpringSecurity框架简介和用法SpringSecurity负责的是 权限验证Spring的注解模式maven引入Spring环境加入layUI环境

项目一众筹网01_00此项目是SSM过渡到分布式项目(SpringBootSpringCloud)

项目一众筹网01_03环境搭建_声明式事务

项目一众筹网02_0_数据库设计工具PowerDesigner的使用数据设计为什么要使用PowerDesigner

项目一众筹网01_02环境搭建_日志系统搭建日志打印级别debuginfoerror

项目一众筹网03_5_工作模式探讨同步和异步探讨