首页 > 其他分享 >ConfigurationClassPostProcessor类,@Configuration注解的底层实现

ConfigurationClassPostProcessor类,@Configuration注解的底层实现

时间:2024-05-20 18:18:46浏览次数:18  
标签:存在 配置 ConfigurationClassPostProcessor lite 注解 Configuration

概览

由前文可知,ConfigurationClassPostProcessor是作为Spring中的内置类被添加到容器中,

【源码学习】Spring启动流程

ConfigurationClassPostProcessor不仅实现了BeanFactoryPostProcessor(BFPP)并且实现了BeanDefinitionRegistryPostProcessor,具有比一般BFPP更高的初始化优先级,在容器的启动过程中处理了@Configuration、@ComponentScan、@Import、@ImportResource注解,根据注解信息创建BeanDefinition。

image

processConfigBeanDefinitions()

首先看processConfigBeanDefinitions方法,遍历了容器中的所有BD,并从中过滤出配置类
image
何为配置类?我们再接着看checkConfigurationClassCandidate方法
image
配置类分为以下两种

  • Full配置类,存在@Configuration,并且proxyBeanMethods不为false(为true或为null)时,就是Full配置类
  • lite配置类
    1. 存在@Configuration,并且proxyBeanMethods为false时,是lite配置类
    2. 不存在@Configuration,但是只要存在@Component、@ComponentScan、@Import、@ImportResource四个中的一个,就是lite配置类
    3. 不存在@Configurations,只要存在@Bean注解了的方法,就是lite配置类

标签:存在,配置,ConfigurationClassPostProcessor,lite,注解,Configuration
From: https://www.cnblogs.com/wangmengmengm/p/18186910

相关文章

  • spring boot如何自定义注解
    总共分三步:1、创建一个注解importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Target(ElementType.METHOD)//注解的目标为方法@Retention(Retention......
  • Entity Framwork Core 数据注解(Data Annotations)使用方法
    在EntityFrameworkCore中,数据注解(DataAnnotations)是通过在实体类的属性上使用特性(Attributes)来配置实体与数据库之间的映射关系的一种方式。这种方式比较直观且易于理解,特别适用于简单的配置需求。下面是一些使用数据注解配置实体的C#示例:1.配置主键publicclassBlog{......
  • Spring IoC注解式开发无敌详细(细节丰富)
    1.SpringIoC注解式开发无敌详细(细节丰富)@目录1.SpringIoC注解式开发无敌详细(细节丰富)每博一文案2.注解回顾3.Spring声明Bean的注解3.1Spring注解的使用3.1.1特别的:如果要扫描的是多个包3.1.2Spring选择性实例化Bean对象3.2通过注解实现“Spring的注入”3.2.1@Value......
  • [Java基础复习]注解
    一、什么是注解注解是JDK1.5才引入的,Java增加了对元数据(描述数据的数据)的支持,也就是注解。注解可以标注在类,成员变量,方法、形参上等。注解可以做到在不改变代码逻辑的前提下在代码中嵌入补充信息。这些信息被保存在注解的“name=value”键值对中。框架=反射+注解+设计模式......
  • Spring Boot的常用注解
    在SpringBoot中,注解(Annotation)是核心特性之一,广泛用于配置和简化开发。以下是SpringBoot中一些常用的注解及其示例:1.@SpringBootApplication@SpringBootApplication是一个组合注解,包括了@Configuration、@EnableAutoConfiguration和@ComponentScan。它通常用在主类上,标识一个......
  • springboot集成@DS注解实现数据源切换(转载)
    springboot集成@DS注解实现数据源切换启用@DS实现数据源切换POM内添加核心jar包yml配置"核心"-使用@DS注解最后启用@DS实现数据源切换POM内添加核心jar包 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-start......
  • { [key: string]: any } 是 TypeScript 中的一种类型注解
    {[key:string]:any} 是TypeScript中的一种类型注解,它描述了一个对象的类型。让我来解释一下这个类型注解,并举一个例子来说明它的用法。在TypeScript中,{[key:string]:any} 表示一个对象,其中键是字符串类型,而值可以是任意类型。{} 表示这是一个对象类型。[key:s......
  • TypeScript 的类型注解
    在TypeScript中,类型注解是一种用于指定变量、函数参数、函数返回值等处的类型信息的语法。通过类型注解,你可以告诉TypeScript编译器某个变量的类型是什么,以便在编译时进行类型检查,并提供更好的代码提示和错误检测。类型注解通常使用冒号 : 后跟着一个类型来指定。例如:let......
  • java基础 韩顺平老师的 枚举和注解 自己记的部分笔记
    424,枚举类引出 packagecom.hspedu.enum_;publicclassEnumeration{publicstaticvoidmain(String[]args){//使用Seasonspring=newSeason("春天","温暖");Seasonsummer=newSeason("夏天","炎热&quo......
  • springmvc常用注解
    @Controller在使用SpringMVC框架开发Web应用程序时,@Controller注解是用来标识一个类为控制器(Controller)的注解。控制器层负责接收用户请求,并根据请求处理逻辑选择合适的业务逻辑进行处理,最终返回响应给用户。控制器的主要作用包括:接收用户请求:控制器负责接收用户......