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个核心注解,它们共同构成了整座工会运转的符文阵列:
-
户籍与分层(
@Component,@Controller,@Service,@Repository): 工会里的每一个法师和建筑都被打上了@Component户籍章。接待大厅贴着@Controller,核心车间贴着@Service,地下档案室则贴着@Repository。 -
组装与依赖(
@Autowired,@Qualifier,@Primary): 当工匠需要零件时,一个@Autowired自动呼叫管家。如果遇到同类候选人打架,就用@Qualifier点名指姓,或者给最优秀的那个贴上@Primary钦定首选。 -
配置与懒加载(
@Configuration,@Bean,@Lazy,@Scope,@Value): 工会总部的@Configuration架构中心里,用@Bean手动注册了各种神兵利器。有些不急着用的傀儡贴上了@Lazy懒人符文,规定好@Scope单例生命周期,并通过@Value从外部小账本里读取能源参数。更高级的参数则通过@PropertySource和@ConfigurationProperties批量整包导入。 -
网络与接口路由(
@RestController, 映射注解群, 参数提取): 当外界商队发来请求,战车上的@RestController(合体自@Controller+@ResponseBody)瞬间苏醒。-
商队通过
@GetMapping、@PostMapping等路标指引方向。 -
传过来的包裹用
@RequestBody拆解。 -
具体的门牌号和账单参数则通过
@PathVariable和@RequestParam精准提取。
-
-
最终的模拟考核: 最后,面对面试官的灵魂拷问,你胸有成竹地把这套由 21 个核心符文交织出的网脉娓娓道来,顺利通关!

浙公网安备 33010602011771号