SpringBoot工作原理

优点:自动装配,起步依赖

起步依赖

原理就是maven的依赖传递

【A依赖B、B依赖C….,则我导入依赖A的时候,B,C都会被maven加载进来】

重点看看自动装配

概念:

当Spring容器启动后,一些配置类、bean对象就自动存入到IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。

(SpringBoot原理、SpringBoot自动配置原理):

在Spring Boot项目中的引导类上有一个注解@SpringBootApplication,这个注解是对三个注解进行了封装,分别是:

@SpringBootConfiguration ——表明当前是配置类,因此我们也可以在启动类下去声明第三方Bean对象

@EnableAutoConfiguration——实现自动化配置的核心注解

@ComponentScan——进行扫包【范围:默认为当前启动类所在包及其子包,因此如果在这个范围外配置了Bean、Component注解的类是不会被自动装配成Bean的】

自动装配的几个方案:

通过@ComponentScan添加扫描的范围【比较繁琐,需要知道第三方库所在的包名,如果库多了,我还需要一个一个手动去添加】

通过@Import导入,SpringBoot帮我们封装好了。@EnableAutoConfiguration注解

【封装了@Import注解】

含义是导入了这个类【实现了ImportSelector接口,所以必须实现selectImports方法】

该方法的返回值为String类型数组,即存放的是需要自动装配的类名

返回值为存放字符串的List集合,通过读取META-INF/spring.factories【springBoot3.0版本之后开始不建议用了,但是还有,在3.2版本之后废弃】 以及

META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration

@EnableAutoConfiguration注解基于@Import注解导入对应的配置选择器,内部就是读取了该项目和该项目引用的Jar包的classpath路径下META—INFO/ spring.factories文件中所配置的类的全类名。在这些配置类中所定义的Bean会根据条件注解决定是否需要将其导入到Spring容器中

条件注解有:

@ConditionalOnClass:判断是否有对应的字节码class文件,如果有则加载当前类,把这个配置类的所有Bean放入Spring容器使用

@ConditionalOnMissingBean:判断环境中是否有对应bean,才注册bean到IOC容器...等等

相关推荐

  1. springboot工作原理

    2024-05-11 12:48:07       31 阅读
  2. @EventListener工作原理

    2024-05-11 12:48:07       42 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-11 12:48:07       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-11 12:48:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-11 12:48:07       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-11 12:48:07       20 阅读

热门阅读

  1. 大模型训练框架DeepSpeed使用入门(1): 训练设置

    2024-05-11 12:48:07       9 阅读
  2. MutationObserver对象

    2024-05-11 12:48:07       9 阅读
  3. K8S面试题学习5

    2024-05-11 12:48:07       9 阅读
  4. k8s介绍

    k8s介绍

    2024-05-11 12:48:07      8 阅读
  5. k8s各个组件的作用

    2024-05-11 12:48:07       9 阅读
  6. react通过onChange传输select的value数据

    2024-05-11 12:48:07       10 阅读
  7. 蓝桥之数组篇

    2024-05-11 12:48:07       10 阅读
  8. 00后同事离职

    2024-05-11 12:48:07       7 阅读
  9. python实现机器学习

    2024-05-11 12:48:07       9 阅读