如何写一个给自己的框架写一个优雅的Java Config模块(三)

Spring Security的架构

  1. Spring Security提供了三个顶级的配置对象,AuthenticationManagerBuilder。、、HttpSecurity、WebSecurity,这三个虽然都是代码意义上的顶级构建对象,但逻辑上只有WebSecurity是最顶级的,WebSecurity的构建要依赖HttpSecurity,而HttpSecurity的构建要依赖AuthenticationManagerBuilder。
  2. WebSecurityConfigurerAdapter是对外提供自定义配置的ConfigurerAdapter,其提供了对上边三个顶级对象的构建的回调方法,这里注意,有两个是内部回调,一个是接口回调:
  3. WebSecurityConfiguration中有个setFilterChainProxySecurityConfigurer方法,用@Autowired标识了,容器启动的时候就会调用这个方法,这个方法里做了三件事
    1. new一个webSecurity这个逻辑顶级对象
    2. 使用AutowiredWebSecurityConfigurersIgnoreParents对象收集所有的自定义配置的ConfigurerAdapter
    3. 将收集的WebSecurityConfigurerAdapter对象添加到WebSecurityConfiguration持有的WebSecurity对象中。
  4. Configuration中有个标识了@Bean的方法,调用了webSecurity.build()方法,build方法中有init流程和configure流程,init流程中会调用所持有的WebSecurityConfigurerAdapter对象的init方法,configure会调用所持有的所有的WebSecurityConfigurerAdapter的configure方法。performBuild方法将所有的配置产生的所有的Filter用filterChainProxy整合,返回一个FilterChainProxy对象。
  5. 整个Spring Security的目的就是为了构建上边的Filter对象。

你可能感兴趣的:(Spring,Boot)