Java面试题:Spring自动配置原理

Spring自动配置原理:

首先项目的启动类上有一个@SpringBootApplication注解----这个注解里包含了另外三个注解

@SpringBootConfiguration :声明当前是一个配置类

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

@ComponentScan: 组件扫描,默认扫描当前引导类所在的包及其子包。


@EnableAutoConfiguration:这个注解里面有个@import注解()可以导入一些类把它放到Spring容器中,

@import注解({AutoConfigurationImportSelector.class})这个注解里有个配置,配置自动配置的选择器。它会加载一个文件,把这个文件统一的加载的Spring容器中,在这个文件中有个META-INF包中有个spring.factories文件,这里面有很多以AutoConfiguration结尾(比如AOP的,比如Redis的。大概100多个类)。比如RedisAutoConfiguration这个类,进来之后你会看到,

@Configuration 声明这个是个配置类

@ConditionalOnClass({RedisOperations.class}):这个是判断是否有对应的字节码对象(RedisOperations.class),什么时候才会有这个字节码对象呢,

当导入Redis相关的起步依赖的时候,这个Class文件就存在了。如果存在呢,就会加载这个类。

这个类里有个redisTemplate方法,这个方法的返回值是RedisTemplate,上面有个@Bean注解,也就是要把这个方法的返回值放入到IOC中,所以我们就可以注入了。这个方法上面还有个@ConditionOnMissingBean注解,这个注解的意思判断环境中有没有对应的bean,如果有的话就不再创建了,没有就创建。

相关推荐
格林威1 分钟前
工业相机图像采集处理:从 RAW 数据到 AI 可读图像,附海康相机 C++实战代码
开发语言·c++·人工智能·数码相机·计算机视觉·c#·工业相机
gaozhiyong08135 分钟前
深度架构拆解:Gemini 3.1 Pro的核心技术突破与国内镜像站实测指南
java·开发语言·jvm·mysql
江不清丶6 分钟前
JVM内存区域深度剖析:从JDK8架构到生产级内存优化
java·jvm·架构
~无忧花开~7 分钟前
React事件处理全解析
开发语言·前端·javascript·react.js·前端框架
拾荒的小海螺9 分钟前
JAVA:Spring Boot3 集成 Spring AI + Ollama 本地模型
java·spring boot·spring
毕设源码-钟学长12 分钟前
【开题答辩全过程】以 课程答疑系统的设计与实现为例,包含答辩的问题和答案
java
tryCbest14 分钟前
Python之FastAPI 高级特性总结与完整项目实战
开发语言·python·fastapi
wjs202414 分钟前
HTML5 Web SQL 深入解析
开发语言
庞轩px16 分钟前
Java基础概念四连问:==与equals、hashCode约定、接口vs抽象类、深拷贝vs浅拷贝
java·开发语言
MX_935917 分钟前
SpringMVC简介
java·后端·spring