0
点赞
收藏
分享

微信扫一扫

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


系列文章目录

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

文章目录

  • ​​系列文章目录​​
  • ​​13-加入SpringSecurity环境​​
  • ​​14-找不到bean异常-分析问题​​
  • ​​15-找不到bean异常-Debug看源码​​
  • ​​怎么查看源码​​
  • ​​16-找不到bean异常-看源码​​
  • ​​17-找不到bean异常-解决办法 一 把两个IOC容器合二为一​​
  • ​​18-找不到bean异常-解决办法二-改源码​​
  • ​​19-SpringSecurity原理​​
  • ​​20-目标1-放行登录页和静态资源(下一篇)​​
  • ​​总结​​
  • ​​剩余部分​​

13-加入SpringSecurity环境

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

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


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


参考源码

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

拿到父工程里面去

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


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


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

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

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


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

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


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

<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个类,代码如下

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


这里抛出一个问题

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


区别如下:

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


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


所以最后我们选择哪个呢?

我们应该在SpringMvc的IOC容器里面去扫描,

因为浏览器直接访问的不是Handler就是view-controller

我们想控制的也是浏览器请求

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


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


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

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

运行项目起来看一下,

注意直接访问登录接口(http://localhost:8080/atcrowdfunding02-admin-webui/admin/to/login.ht)会比较稳,

而不是去访问页面,因为页面可能因为未登录导致不能访问

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


此时运行项目会报这个(找不到bean)错,

但是不要慌,因为这个是springSecurity加入到项目里面首先要解决的一个问题

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


提出(发现)问题,分析问题、解决问题

其实就是找不到这个:

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


明明有,为什么找不到呢,这是因为查找bean需要到IOC容器里面去找

我们分析一下

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

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


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


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

如下:

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


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


我们后面来想办法

看看怎么解决

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

怎么查看源码

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

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


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

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

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

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


Ctrl+O调出大纲

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


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


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

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


源码本身不难,只是不是我们自己控制的,所以有些人会觉得看源码非常枯燥

不能用心去看源码,其实是有点吃亏的,

不过也能理解,毕竟不是自己整的,不是按照自己的想法来的,需要去要强行适应

继续跟着源码一步一步调试往下走

去体会下面这条线是怎么走的

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

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

(略)

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

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


这句话怎么理解?

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


具体怎么做?

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


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


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


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

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

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

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

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

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


上面这里注释掉,还有一个地方

下面看具体操作

改源码,可参考前面说的

这里就不那么详细说了前期的步骤了,直接看具体改的地方

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


第一个地方:

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


第二个地方:

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


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


这个时候再运行项目,就会发现被SpringSecurity控制住了,几乎全部拦截了,

必须要登录被SpringSecurity判断了权限后才能看到我们的项目,

下面就是放行登录页和静态资源了

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

19-SpringSecurity原理

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

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

总结

今日总结

1、项目里面加入springSecurity的依赖

2、加入依赖之后解决找不到bean的问题,需要改源码

3、在项目里面SpringSecurity环境搭好之后,需要放行登录页和静态资源,因为这部分是不需要权限控制的

4、我发现项目加入了SpringSecurity环境之后,启动速度变慢了很多,我猜测,目前很多公司的项目启动速度比较慢可能跟配置了权限管理系统有一定的关系

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


这里我们卖个关子,用最终版的代码(还没讲)和现在的代码,启动速度是相差特别大的

575324 - 34759=540,565 相当于 540秒 差不多10分钟,好家伙,启动一个项目10分钟 这不优化太恐怖了

可以得知肯定是可以优化的,并且优化后的启动速度只是现在速度的零头 差距非常非常明显

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

剩余部分

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


举报

相关推荐

0 条评论