当前位置: 首页 > news >正文

SpringBoot的自动配置原理及常见注解

1. 在SpringBoot项目中,在启动类上会使用注解 @SpringBootApplication,该注解实际上包含了多个注解,如下:

①  @SpringBootConfiguration 该注解与 @Configuration作用相同,用来声明当前类为配置类

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

③  @EnableAutoConfiguration SpringBoot实现自动配置的核心注解。

2. 注解@EnableAutoConfiguration中包含了以下几种注解:

最主要的就是 import导入的类 自动配置注入选择器,该类会加载springboot自动配置包的META-INF下的 spring.factories文件,该文件中spring中众多的自动配置的类,springboot会根据具体的条件加载这些类。此处以RedisAutoConfiguration为例

注解 @Configuration说明该类为配置类

注解 @ConditionalOnClass 表示判断是否存在 RedisOpeartion.class的字节码文件,如果有,则会加载该配置类。RedisOpeartion.class类存在于Redis的相关依赖jar中。

方法 redisTemplate 上的注解 @Bean 表示该方法的返回值对象会被放入Spring容器中统一管理。注解 @ConditionalOnMissingBean 表示判断容器中是否存在相应的对象,如果有,则不加载该方法。

2. 常见的注解

2.1 Spring的常见注解

注解说明
@Compontent  @Controller  @Service  @Repository使用在类上用于实例化Bean
@Autowired使用在字段上用于根据类型依赖注入
@Qualifier结合@Autowired 一起使用用于根据名称进行依赖注入
@Scope标注Bean的作用范围
@Configuration指定当前类一个Spring配置类,当创建容器时会从该类上加载注解
@CompontentScan用于指定Spring在初始化容器时需要扫描的包
@Bean使用在方法上,标注将方法的返回值存储到Spring容器中
@Import表示类会被Spring加载到IOC容器中
@Aspect  @Before  @After  @Around  @Pointuct用于切面编程 AOP(前面类、前置通知、后置通知、环绕通知、切面表达式)

2.2 SpringMVC的常见注解

注解说明
@RequestMapping用于映射请求路径,可以定义在类和方法上,用于类上,表示类中的所有方法都是以该地址作为父路径
@RequestBody接收请求的json数据,将json转化为java对象
@RequestParam指定请求参数名称
@PathViriable从请求路径下获取请求参数(/user/{id}),传递给方法的形参
@ResponseBody将controller方法返回的对象转化为json响应到前端
@RequsetHeader获取指定的请求头数据
@RestController@Controller + @ResponseBody

2.3 SpringBoot的常见注解

注解说明
@SpringBootConfiguration组合了@Configuration注解,实现配置文件的功能
@EnableAutoConfiguration打开自动配置功能,也可以关闭某个自动配置的选项
@CompontentScanSpring组件扫描


文章转载自:

http://y8f2GazI.Lfsmf.cn
http://mbPkZ0uL.Lfsmf.cn
http://Sh82glSv.Lfsmf.cn
http://wb3fSSt7.Lfsmf.cn
http://kgLmIhRB.Lfsmf.cn
http://x2hYgDhA.Lfsmf.cn
http://41ZOe1rP.Lfsmf.cn
http://3SAy83lg.Lfsmf.cn
http://ZgR9VMc6.Lfsmf.cn
http://4MSDcQTB.Lfsmf.cn
http://LqY8PHHq.Lfsmf.cn
http://piMpwmMJ.Lfsmf.cn
http://4JdAThAw.Lfsmf.cn
http://D8neYrSj.Lfsmf.cn
http://KDwfdz6I.Lfsmf.cn
http://4bY9fZMM.Lfsmf.cn
http://3iNj0zzO.Lfsmf.cn
http://rKE6QtKv.Lfsmf.cn
http://AKQzk7uE.Lfsmf.cn
http://szWl7cJJ.Lfsmf.cn
http://Ia762VFu.Lfsmf.cn
http://d70dfvji.Lfsmf.cn
http://Nz1BQJzW.Lfsmf.cn
http://IFxNZbnX.Lfsmf.cn
http://FA35TRWT.Lfsmf.cn
http://sNAIpr5w.Lfsmf.cn
http://GN2GJc41.Lfsmf.cn
http://87Cq6XRY.Lfsmf.cn
http://C6wWtUyP.Lfsmf.cn
http://p42QCv1t.Lfsmf.cn
http://www.dtcms.com/a/384001.html

相关文章:

  • Java内部类内存泄漏解析:`this$0`引用的隐秘风险
  • 快速掌握Dify+Chrome MCP:打造网页操控AI助手
  • 【cpp Trip第1栈】vector
  • 详解 new 和 delete
  • 基于PassGAN的密码训练系统设计与实现
  • 避开Java日期格式化陷阱:`yyyy`与`YYYY`的正确使用
  • SpringCloud与Dubbo实战对决:从协议到治理的全维度选型指南(一)
  • SAP HANA Scale-out 04:CalculationView优化
  • 删除文件夹里的网盘图标
  • MPC模型预测控制:一种先进的控制策略
  • 【数据集】基于观测的全球月度网格化海表pCO₂与海气CO₂通量产品及其月气候平均值
  • RS485简介
  • Claude Code vs Codex
  • 多语言编码Agent解决方案(5)-IntelliJ插件实现
  • 光纤入户技术:原理、策略与市场博弈
  • DeerFlow实践: 日程管理智能体应用框架设计
  • spring、springboot、springCloud
  • Thymeleaf
  • 美团首款AI Agent产品“小美”公测,AI会带来什么?
  • 在 UE5 中配置 SVN 版本工具
  • Qwen3 模型结构解析
  • class_8:java继承
  • Django模型与数据库表映射的两种方式
  • 国产化监控方案:金仓数据库 + Nagios 从零搭建指南,核心指标实时掌握
  • 【Linux探索学习】第一篇Linux的基本指令(1)——开启Linux学习第一篇
  • 关于android.permission.CAPTURE_AUDIO_OUTPUT
  • Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
  • Redis和数据库的一致性
  • 使用node-Express框架写一个学校宿舍管理系统练习项目-前后端分离
  • 上下文工程实践 - 工具管理(上篇)