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,如果有的话就不再创建了,没有就创建。

相关推荐
Coder_Boy_7 分钟前
基于SpringAI的在线考试系统-企业级软件研发工程应用规范实现细节
大数据·开发语言·人工智能·spring boot
lly20240610 分钟前
SQL SELECT 语句详解
开发语言
5***b9710 分钟前
Spring Boot--@PathVariable、@RequestParam、@RequestBody
java·spring boot·后端
AIGCExplore26 分钟前
Jenkins 全局配置及工具验证教程
java·servlet·jenkins
qq_3181215931 分钟前
Java大厂面试故事:Spring Boot、微服务与AI场景深度解析
java·spring boot·redis·微服务·ai·kafka·spring security
superman超哥32 分钟前
Rust 异步时间管理核心:Tokio 定时器实现机制深度剖析
开发语言·rust·编程语言·rust异步时间管理核心·tokio定时器实现机制·tokio定时器
朔北之忘 Clancy33 分钟前
2025 年 9 月青少年软编等考 C 语言一级真题解析
c语言·开发语言·c++·学习·数学·青少年编程·题解
玛丽莲茼蒿36 分钟前
javaSE 集合框架(五)——java 8新品Stream类
java·开发语言
wjs202440 分钟前
SQLite Glob 子句详解
开发语言
程序员小假43 分钟前
设计一个支持万人同时抢购商品的秒杀系统?
java·后端