Import注解
概述
在spring的很多自动配置类中,一般都会被注释一个enable注解,而在这个enable注解上一般都会使用@Import
注解将一些类注册到spring容器中,这和我们平常使用的@Bean
,@Configuration
注解有什么不同呢?本质上它们都是注册bean的,而@Import
注解常见的用法是注解在需要通过注解属性动态注入的配置类的类上,这个说法可能有点绕口,我们可以理解为它需要根据注解里面的某些属性选择性的将一些类注入到spring容器中
1 | @Target(ElementType.TYPE) |
value方法表明该注解可以导入被@Configuration
注解的类,ImportSelector类型的类,ImportBeanDefinitionRegistrar类型的类,或者是普通的java类,下面我们就分别看一下如何通过@Import
注解将bean注入到spring容器中。
FilterChainProxy源码分析
HttpSecurity源码分析
WebSecurityConfigurerAdapter源码分析
概述
在上一篇WebSecurity源码分析中我们知道了,HttpSecurity是通过WebSecurityConfigurerAdapter进行配置的,默认情况下如果我们没有编写WebSecurityConfigurerAdapter的子类,那它是如何完成配置的呢?其实在SpringBootWebSecurityConfiguration中有一个默认的WebSecurityConfigurerAdapter的子类
1 | @Configuration |
这就是spring-security为我们默认添加的一个适配器,如果我们在项目中自己定义了一个类继承WebSecurityConfigurerAdapter的话,这个默认的类就不会被加载了。
WebSecurity源码分析
概述
WebSecurity是spring-security整个体系里面最为重要的一个安全类,通过之前的文章分析,我们可以得知spring-security是通过一个名称为springSecurityFilterChain的过滤器对所有的请求进行过滤的,同时在WebSecurityConfiguration源码分析中我们可以得知这个过滤器是通过以下方式被WebSecurity构建出来的
1 | @Bean(name = AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME) |
本章主要分析WebSecurity构建SpringSecurityFilterChain的流程,围绕WebSecurity的build方法展开。