Spring相关类继承结构
2020-09-21 09:13:19 13 举报
Spring相关类继承结构
作者其他创作
大纲/内容
ConfigurableBeanFactory
定义了修改、配置BeanFactory的方法
InitDestroyAnnotationBeanPostProcessor:init and destroy methods
某webServlet类
SmartFactoryBean<T>
boolean isPrototype()boolean isEagerInit():标志是否初始化工厂Bean后立即生产
ClassPathXmlApplicationContext
定义了由构造方法中传入的路径解析出来的configResources
HierarchicalBeanFactory
定义了父BeanFactory
WebSecurityConfigurer<T extends SecurityBuilder<Filter>>
ConfigurationClassPostProcessor
AbstractRefreshableWebApplicationContext
拥有ID实现配置、获取Config路径的方法
ApplicationContext
定义了获取BeanFactory的方法
ResourceLoader
定义了根据location取得Resource的方法
ProviderManagerBuilder<B extends ProviderManagerBuilder<B>>
B authenticationProvider(AuthenticationProvider authenticationProvider) 添加Provider
BeanDefinitionRegistry
定义了alias,bd的存取方法
ApplicationEventPublisher
定义了发布事件的方法
CurrentThread
ThreadLocalMap
ThreadLocal Ref
标准库类就不会有
DelegatingFilterProxy
String contextAttribute;WebApplicationContext webApplicationContext;String targetBeanName;volatile Filter delegate;
#initFilterBean():根据名字实例化targetBean,作为自己的delegate#doFilter:直接交给delegate
value类的类对象
HttpSecurityBuilder<H extends HttpSecurityBuilder<H>>
extends SecurityBuilder<DefaultSecurityFilterChain>
GenericApplicationContext
定义了一个DefaultListableBeanFactory实现了注册Bean的方法
InstantiationAwareBeanPostProcessorAdapter
ConfigurableListableBeanFactory
ThreadLocals
ConfigurableWebApplicationContext
定义配置、获取Config路径的方法定义配置、获取Servlet上下文的方法
AnnotatedGenericBeanDefinition
会将所有注解信息包装到StandardAnnotationMetadata
实现获取该bd的注解信息的方法实现获取该db的工厂方法的注解信息的方法
ScannedGenericBeanDefinition
存储扫描出的@Component bd
DefaultSingletonBeanRegistry
定义了三级缓存定义了各种情况下的单例对象Map定义了单例对象之间的依赖关系存入Map
实现了单例Bean的存取方法
AbstractBeanFactory
定义了后置处理器的Map
具体实现了获取与创建Bean的方法
BeanPostProcessor
AutowireCapableBeanFactory
定义 Bean 的自动装配方法定义 Bean 的各种初始化钩子方法
ListableBeanFactory
定义根据条件取出对应所有Bean的方法
AnnotationConfigApplicationContext
定义一个AnnotatedBeanDefinitionReader定义一个ClassPathBeanDefinitionScanner
实现注册配置类的方法实现扫描路径的方法
AbstractRefreshableApplicationContext
支持多次refresh,每次重新创建一个新的DefaultListableBeanFactory
定义了loadBeanDefinitions方法,留给子类实现
BeanDefinitionRegistry
定义了bd的存取方法
DaoAuthenticationProvider provider = new DaoAuthenticationProvider()U userDetailsService
passwordEncoder(PasswordEncoder passwordEncoder):配置ProvideruserDetailsPasswordManager(UserDetailsPasswordService passwordManager):配置Providerconfigure(B builder):postProcess(Provider)后,加入buildr
AuthenticationManagerBuilder
AuthenticationManager parentAuthenticationManagerList<AuthenticationProvider> authenticationProvidersUserDetailsService defaultUserDetailsServiceBoolean eraseCredentialsAuthenticationEventPublisher eventPublisher
AbstractBeanDefinition
定义基本常量定义基本状态变量由构造参数+属性或父bd初始化由beanname解析出beanclass
SecurityBuilder<O>
O build();利用SecurityBuilder建造一个O
ResourcePatternResolver
定义了根据locationPattern取得若干个Resource的方法
MergedBeanDefinitionPostProcessor:内部处理器
DefaultResourceLoader
实现了获取Resource的方法
类路径URL
SmartInitializingSingleton
void afterSingletonsInstantiated():Bean最后阶段的回调方法
WebSecurity:建造FilterChainProxy
List<SecurityBuilder<? extends SecurityFilterChain>> securityFilterChainBuildersFilterSecurityInterceptor filterSecurityInterceptorHttpFirewall httpFirewallDefaultWebSecurityExpressionHandler defaultWebSecurityExpressionHandlerRunnable postBuildAction
Filter performBuild():建造securityFilterChains,并新建FilterChainProxy封装
WebApplicationContext
ServletContext getServletContext()
GenericFilterBean:回调子类覆盖的initFilterBean()
String beanName;Environment environment;ServletContext servletContext;FilterConfig filterConfig;Set<String> requiredProperties = new HashSet<>(4);
Lifecycle
定义了组件启动、停止的方法
AbstractAuthenticationProcessingFilter
public abstract U getUserDetailsService();获取默认的
DefaultListableBeanFactory
定义了bdMap定义了BeanNameMap
AnnotatedBeanDefinition
定义获取该bd的注解信息方法定义获取该db的工厂方法的注解信息方法
AbstractApplicationContext
定义了beanFactoryPostProcessor的List定义了广播器与监听器
实现了发布事件的方法实现了容器refresh方法
Entry
ConfigurableApplicationContext
定义了自定义配置上下文的方法
SmartInstantiationAwareBeanPostProcessor
Entry Table
apply(C SecurityConfigurerAdapter)apply(C configurer)beforeInit()init();beforeConfigure()configure()void add(C configurer)P postProcess(P object):调用处理器
CurrentThread Ref
ConfigurationClassBeanDefinition
将@Bean注解的方法转换为对应的ConfigurationClassBeanDefinition类
InstantiationAwareBeanPostProcessor
RootBeanDefinition
合并之后的最终bd使用BeanDefinitionHolder定义了id、别名与Bean的对应关系保存了注解、泛型信息具体的工厂方法(Class类型),包括工厂方法的返回类型,工厂方法的Method对象
DestructionAwareBeanPostProcessor:销毁前回调
BeanFactoryPostProcessor
void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory):配置工厂
Value
AbstractAutowireCapableBeanFactory
具体实现了获取与创建Bean的方法实现了属性注入、自动填充等功能
FilterChainProxy
List<SecurityFilterChain> filterChains;HttpFirewall firewall = new StrictHttpFirewall();
#doFilter:加一个正在处理的标记,进入doFilterInternal,之后清除SecurityContext,清除标记。#doFilterInternal:
BeanDefinition
ParentNameBeanClassNameScopeLazyInitDependsOnFactoryBeanNameFactoryMethodName
HttpSecurity:建造SecurityFilterChain
RequestMatcherConfigurer requestMatcherConfigurerList<Filter> filters = new ArrayList<>()RequestMatcher requestMatcher = AnyRequestMatcher.INSTANCE
UsernamePasswordAuthenticationFilter
AbstractSecurityBuilder<O>
private AtomicBoolean building = new AtomicBoolean()private O object
public final O build();CAS检查是否已被build过,若无,进入doBuildprotected abstract O doBuild();public final O getObject(); 如果已经创建完了则返回
AutowiredAnnotationBeanPostProcessor
推断构造器解析@Autowire放入injectionMetadataCache,之后解析属性上的@Autowired
EventListenerMethodProcessor
SingletonBeanRegistry
定义了单例Bean的存取方法
protected final O doBuild() throws Exception { buildState = BuildState.INITIALIZING; beforeInit(); init(); buildState = BuildState.CONFIGURING; beforeConfigure(); configure(); buildState = BuildState.BUILDING; O result = performBuild(); buildState = BuildState.BUILT; return result; }
自定义的value类
WebSecurityConfigurerAdapterimplements WebSecurityConfigurer<WebSecurity>
ApplicationContext context;private AuthenticationConfiguration authenticationConfiguration;private AuthenticationManagerBuilder authenticationBuilder;private AuthenticationManagerBuilder localConfigureAuthenticationBldr;private AuthenticationManager authenticationManager; private HttpSecurity http; private boolean disableDefaults;
AbstractXmlApplicationContext
实现了loadBeanDefinitions方法
SimpleAliasRegistry
实现了别名的存取方法
AbstractRefreshableConfigApplicationContext
EnvironmentCapable
定义了获取Environment的方法
Key
BeanFactory
FactoryBeanRegistrySupport
定义了存放工厂生产出的对象的缓存池
实现了FactoryBean的相关方法
Application Ref
OncePerRequestFilter
#doFilter:通过在request中设置Filter的名字来确保每个Filter只执行一次。之后进入子类的#doFilterInternal#shouldNotFilter(httpRequest):子类覆盖来自定义是否跳过
AnnotationConfigRegistry
void register(Class<?>... componentClasses)void scan(String... basePackages)
UserDetailsServiceConfigurer
configure(B builder):init后调用父类protected void initUserDetailsService():初始化UserDetailsService
GenericBeanDefinition
可拥有父bd
Stack
T getObject()Class<?> getObjectType()boolean isSingleton()
ThreadLocal
web类加载器
AliasRegistry
定义了别名的存取方法
AttributeAccessor
根据name可对属性进行存取
void init(B builder); 初始化Bvoid configure(B builder);配置B的属性
定义了存取单个Bean的基本方法
AnnotationConfigWebApplicationContext
实现注册、扫描方法
ImportAwareBeanPostProcessor
Heap
CommonAnnotationBeanPostProcessor
B securityBuilderCompositeObjectPostProcessor objectPostProcessor
void init(B builder)configure(B builder)postProcess(T object)
BeanDefinitionRegistryPostProcessor
void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry):修改bd
0 条评论
下一页
为你推荐
查看更多