首页 > 其他分享 >spring重点后置处理器

spring重点后置处理器

时间:2024-02-27 18:44:58浏览次数:34  
标签:definition basePackages 后置 spring bean 处理器 修饰 注解 解析

1. DefaultListableBeanFactory的作用:

  默认实现了ListableBeanFactory和BeanDefinitionRegistry接口,基于bean definition对象,是一个成熟的bean factroy。

  最典型的应用是:在访问bean前,先注册所有的definition(可能从bean definition配置文件中)。使用预先建立的bean定义元数据对象,从本地的bean definition表中查询bean definition因而将不会花费太多成本。

  DefaultListableBeanFactory既可以作为一个单独的beanFactory,也可以作为自定义beanFactory的父类。

2.ConfigurationClassPostProcessor最重要的核心后置处理器之一

  a、核心流程的入口

  b、注解的收集

  c、ImportSelector接口和DeferredImportSelector接口和ImportBeanDefinitionRegistrar接口
  d、其他注解的收集
  e、注册BeanDefinition
  f、处理@Configuration注解

    1、解析被@Configuration修饰的配置类
      这里是首先是启动类加入了容器,所以只有启动类扫描到@Configuration
      parse().doProcessConfigurationClass()会解析启动类其它@PropertySource、@ComponentScan、@Import、@ImportResource、@Bean其它注解

    2、解析@ComponentScan扫描的包
      解析到启动类没有配置默认basePackages,会把启动类包路径作为basePackages

        if (basePackages.isEmpty()) {
          basePackages.add(ClassUtils.getPackageName(declaringClass));
        }

     然后会doScan()扫描目录下所有class,判断是否@component(@servic、@controller等等底层都是@component)注解,有则加入beanDefinitions

    3、解析被@Import注解修饰的类
      会递归寻找@import注解引入的类,然后加入到有则加入beanDefinitions,
      springboot就是原理在这个过程中通过解析spring.factories文件获取所有引入的class

    4、解析被@bean注解修饰的类

 

3.ServletWebServerFactoryAutoConfiguration 默认tomcat作为springboot容器

  AbstractApplicationContext#onRefresh()会调用ServletWebServerApplicationContext创建tomcat
  AbstractApplicationContext#finishRefresh()完成启动

 

4.AutowiredAnnotationBeanPostProcessor:处理被@Autowired注解修饰的bean并注入

5.RequiredAnnotationBeanPostProcessor:处理被@Required注解修饰的方法

6.CommonAnnotationBeanPostProcessor:处理@PreDestroy、@PostConstruct、@Resource等多个注解的作用

标签:definition,basePackages,后置,spring,bean,处理器,修饰,注解,解析
From: https://www.cnblogs.com/lemon-flm/p/18037556

相关文章

  • springboot 统一处理请求非法参数
    通过拦截器和过滤器实现,话不多说上代码。1、重写HttpServletRequestWrapper读取body里面的内容。publicclassRequestWrapperextendsHttpServletRequestWrapper{privatefinalStringbody;publicRequestWrapper(HttpServletRequestrequest){super......
  • 如何创建自己的Spring Boot Starter并为其编写单元测试
    当我们想要封装一些自定义功能给别人使用的时候,创建SpringBootStarter的形式是最好的实现方式。如果您还不会构建自己的SpringBootStarter的话,本文将带你一起创建一个自己的SpringBootStarter。快速入门创建一个新的Maven项目。第三方封装的命名格式是xxx-spring-boo......
  • springboot2.6开始禁止循环依赖了
    参考文章: https://mp.weixin.qq.com/s?__biz=MzI0MTUwOTgyOQ==&mid=2247497189&idx=1&sn=0f03cdafad9bacef66c64a490b85ff23&scene=21#wechat_redirect使用了SpringBoot2.6及以上版本的,如果要允许循环依赖,可以作如下设置:方案二:允许循环引用此方案更像是绕过问题而非解决问题......
  • 解析Spring中的循环依赖问题:初探三级缓存
    什么是循环依赖?这个情况很简单,即A对象依赖B对象,同时B对象也依赖A对象,让我们来简单看一下。//A依赖了BclassA{publicBb;}//B依赖了AclassB{publicAa;}这种循环依赖可能会引发问题吗?在没有考虑Spring框架的情况下,循环依赖并不会带来问题,因为对象之间相互依赖......
  • SpringCloud和SpringBoot的版本依赖该怎么选择
    前言SpringCloud是一个基于SpringBoot的微服务框架,用于构建和管理分布式系统的各个组件。它提供了一套完整的解决方案,包括服务注册与发现、配置管理、负载均衡、熔断器、消息总线、数据流等功能。SpringCloud2023为当前SpringCloud的最新版本迭代,基于Spring6和Springboot3以......
  • Spring Security权限控制框架使用指南
    在常用的后台管理系统中,通常都会有访问权限控制的需求,用于限制不同人员对于接口的访问能力,如果用户不具备指定的权限,则不能访问某些接口。本文将用waynboot-mall项目举例,给大家介绍常见后管系统如何引入权限控制框架SpringSecurity。大纲如下,一、什么是SpringSecurityS......
  • SpringBoot/Java中OCR实现,集成Tess4J实现图片文字识别
    场景TesseractTesseract是一个开源的光学字符识别(OCR)引擎,它可以将图像中的文字转换为计算机可读的文本。支持多种语言和书面语言,并且可以在命令行中执行。它是一个流行的开源OCR工具,可以在许多不同的操作系统上运行。https://github.com/tesseract-ocr/tesseractTess4JTess4......
  • Spring Boot 信息泄露总结
    1.目标2.微信sessionkey泄露导致任意用户登录点击快捷登录,发现可以使用手机号进行登录发现sessionkey,使用工具利用没有账号,尝试13111111111(一般测试账号是这个),成功登录 3.进行指纹识别,发现为SpringBoot框架,测试发现SpringActuator信息泄露 4.发现actuator/gate......
  • Springboot的starter有什么用以及如何自定义一个starter
    SpringBoot的starter是什么我们都知道SpringBoot的目的就是为了让开发者尽可能的减少项目配置专注于程序代码的编写,而'starter'就是SpringBoot简便开发、自动装配的具体实现。以‘mybatis-spring-boot-starter’为例:<dependency><groupId>org.mybatis.spring.boot<......
  • springboot3 security6.0.2 session timeout 方案
    方案1packagejp.co.toppan.dch.web.core.security;importjakarta.servlet.ServletException;importjakarta.servlet.http.Cookie;importjakarta.servlet.http.HttpServletRequest;importjakarta.servlet.http.HttpServletResponse;importorg.apache.commons.lang3.S......