跳到主要内容

Spring Security源码(一):整体框架设计

文章目录

  • 一、一句话概括框架原理
  • 二、何处开始读源码?
    • 思考
  • 瞅瞅
  • 三、框架接口设计
    • 建造者
  • 配置器
  • 四、总结
  • 五、系列文章
    • Spring Security 系列
  • Spring Security OAuth 系列

一、一句话概括框架原理

> 整个框架的核心就是构建一个名字为 springSecurityFilterChain 的过滤器Bean,它的类型是 FilterChainProxy


二、何处开始读源码?

思考

> 我们知道,程序入口类会自动扫描当前包及其子包下所有的Bean,并进行实例化,那么 在引入一个新的框架,框架中一些定义好的Bean如何注入我们的Spring容器中呢? ,这些包并不能被入口类扫描中。

> 其实无非就是通过 @Import 引入相关的类。一般在使用 Spring Security 框架时,我们会自定义一个配置类,配置类加上 @EnableWebSecurity 注解,重新启动程序,一个使用了安全框架的项目就起来了,在无任何自定义配置情况下 Spring Security 默认配置了一个登录过滤器链。

> 加个 @EnableWebSecurity 注解就可以,怎么做到的?

瞅瞅

  • 点击自定义配置类上添加的 @EnableWebSecurity
@Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
@Target(value = {

java.lang.annotation.ElementType.TYPE })
@Documented
@Import({

WebSecurityConfiguration.class,
SpringWebMvcImportSelector.class })
@EnableGlobalAuthentication
@Configuration
public @interface EnableWebSecurity {



/**
* Controls debugging support for Spring Security. Default is false.
* @return if true, enables debug support with Spring Security
*/
boolean debug() default false;
}