15. Spring 与 Spring Boot 注解

在 Spring 的魔法世界里,注解 (Annotations) 就是我们给代码施展的“咒语”。只要在类、方法或变量上轻轻贴上一个符号,Spring 管家就能瞬间听懂你的意图并赋予它神奇的力量。

面对这21个高频面试注解(外加一场模拟面试大演练),让我们用最通俗有趣的语言来一网打尽!

第一部分:核心面试题极简通俗解答

1. @Component 注释

  • 通俗解答:“户籍登记章”。贴在普通类上,告诉 Spring 管家:“这个类归你管了,请把它注册为一个 Bean 纳入容器。”

2. @Autowired 注解

  • 通俗解答:“自动呼叫/按需索取”。贴在属性或构造函数上,Spring 会自动把需要的依赖对象“注入”进来,不用你自己去 new。

3. @Qualifier 注解

  • 通俗解答:“点名指姓”。当同类型的候选人有好几个(比如有两个魔法师),光靠自动注入会迷茫,用它加上名字精确指定:“就要 A,不要 B!”

4. @Primary 注解

  • 通俗解答:“钦定首选”。如果大家都是同类候选人,给其中一个贴上它,Spring 在没有特殊指定时就会优先选择它。

5. @Bean 和 @Configuration 注解

  • 通俗解答:

    • @Configuration:声明这是一个“魔法工厂配置中心”。

    • @Bean:写在方法上,用来把第三方写好的类手动加工后注册进容器。

6. @Controller, @Service 和 @Repository

  • 通俗解答:它们是 @Component 的“精细化分身”:

    • @Controller:贴在网页/控制层(接待大厅)。

    • @Service:贴在业务逻辑层(核心加工厂)。

    • @Repository:贴在数据库访问层(地下档案馆,顺便还能帮你把冷冰冰的数据库错误翻译成友好的异常)。

7. @Lazy 懒人注解

  • 通俗解答:“不到万不得已绝不开工”。默认情况下 Bean 在容器一开机就会全部创建,贴了它之后,只有当第一次真正被调用时才临时去创建。

8. @Scope 注解

  • 通俗解答:“户籍身份有效规则”。用来定义 Bean 的生命周期范围,比如 singleton(全局单例,终身一个)或 prototype(原型,每次用都重新 new 一个)。

9. @Value 注解

  • 通俗解答:“配置参数直通车”。用来把配置文件(application.properties)里的具体数值(比如端口号、密钥)直接塞进代码的变量里。

10. @PropertySource 和 @PropertySources 注解

  • 通俗解答:“外挂小账本”。用来加载项目自带的默认配置之外的自定义属性配置文件(例如 db.properties)。

11. @ConfigurationProperties 注解

  • 通俗解答:“批量数据打包导入”。能把配置文件里一整坨带相同前缀的配置(比如邮件服务器的账号、密码、端口)一脑门子整齐地注入到一个 Java 实体类里。

12. @Controller 和 @ResponseBody 注解

  • 通俗解答:传统 Web 组合拳。@Controller 负责接收请求,配合 @ResponseBody 后,所有方法的返回值不再去跳转页面,而是直接把纯文本或 JSON 数据吐给前端。

13. @RestController 注解

  • 通俗解答:“前后端分离专属核武器”。它等于 @Controller + @ResponseBody 的合体,专为写 RESTful API 而生。

14. @RequestMapping 注解

  • 通俗解答:“导航路标”。给类或方法贴上,用来指定访问哪个 URL 路径会触发这个方法。

15. @GetMapping 注解

  • 通俗解答:“GET 专属路标”。专门用来接收查阅类(GET)请求的快捷方式(相当于 @RequestMapping(method = GET))。

16. @PostMapping 和 @RequestBody 注解

  • 通俗解答:

    • @PostMapping:专门接收提交、新增类(POST)请求的快捷路标。

    • @RequestBody:用来把前端传过来的长长的 JSON 数据包裹自动反序列化成 Java 对象。

17. @PutMapping 注解

  • 通俗解答:专门用来接收整体替换/更新(PUT)请求的路标。

18. @DeleteMapping 注解

  • 通俗解答:专门用来接收删除(DELETE)请求的路标。

19. @PathVariable 注解

  • 通俗解答:“拆解路径变量”。用来拿 URL 路径里嵌的参数(例如 /users/{id} 里的 id)。

20. @RequestParam 注解

  • 通俗解答:“拆解问号参数”。用来拿 URL 问号后面或者表单提交的键值对(例如 /search?keyword=java 里的 keyword)。

21. 模拟面试角色扮演 (Mock Interview)

  • 通俗解答:面试时把上面这些注解融会贯通,自信流利地向面试官展示你对 Spring 底层控制和 Web 路由的绝对掌控力!

第二部分:串联所有知识点的魔法大故事 —— 《魔法工会的注解符文阵列》

想象你站在宏伟的 Spring 魔法工会总控室,墙面上刻满了这21个核心注解,它们共同构成了整座工会运转的符文阵列:

  1. 户籍与分层(@Component, @Controller, @Service, @Repository): 工会里的每一个法师和建筑都被打上了 @Component 户籍章。接待大厅贴着 @Controller,核心车间贴着 @Service,地下档案室则贴着 @Repository。

  2. 组装与依赖(@Autowired, @Qualifier, @Primary): 当工匠需要零件时,一个 @Autowired 自动呼叫管家。如果遇到同类候选人打架,就用 @Qualifier 点名指姓,或者给最优秀的那个贴上 @Primary 钦定首选。

  3. 配置与懒加载(@Configuration, @Bean, @Lazy, @Scope, @Value): 工会总部的 @Configuration 架构中心里,用 @Bean 手动注册了各种神兵利器。有些不急着用的傀儡贴上了 @Lazy 懒人符文,规定好 @Scope 单例生命周期,并通过 @Value 从外部小账本里读取能源参数。更高级的参数则通过 @PropertySource 和 @ConfigurationProperties 批量整包导入。

  4. 网络与接口路由(@RestController, 映射注解群, 参数提取): 当外界商队发来请求,战车上的 @RestController(合体自 @Controller + @ResponseBody)瞬间苏醒。

    • 商队通过 @GetMapping、@PostMapping 等路标指引方向。

    • 传过来的包裹用 @RequestBody 拆解。

    • 具体的门牌号和账单参数则通过 @PathVariable 和 @RequestParam 精准提取。

  5. 最终的模拟考核: 最后,面对面试官的灵魂拷问,你胸有成竹地把这套由 21 个核心符文交织出的网脉娓娓道来,顺利通关!

posted @ 2026-10-11 02:58  漫漫长路</>  阅读(8)  评论(0)    收藏  举报