前言
Spring 和 SpringBoot 的核心就是
注解开发。SpringBoot 简化了 Spring 繁琐的配置,大量使用自动化注解。本文将所有注解分为:
启动注解、Web注解、Bean注解、依赖注入注解、配置注解、事务注解、AOP注解、全局注解八大类,从零学通透。
一、核心启动注解(SpringBoot 专属)
1. @SpringBootApplication
SpringBoot 启动类唯一核心注解,三合一组合注解:
@EnableAutoConfiguration:开启自动配置
@ComponentScan:自动扫描当前包及子包所有组件
作用:一键启动项目、自动加载配置、自动扫描Bean。
2. @EnableAutoConfiguration
开启 SpringBoot 自动装配,根据依赖包自动配置容器、web、数据源等。
3. @Configuration
标识当前类为
配置类,可以使用 @Bean 注册组件。
二、Web 层注解(Controller 接口开发)
1. @RestController
@Controller + @ResponseBody 合体
作用:类中所有方法返回值自动转为 JSON 数据,用于写接口。
2. @Controller
3. @RequestMapping / @GetMapping / @PostMapping
4. @PathVariable
5. @RequestParam
6. @RequestBody
7. @CrossOrigin
三、Bean 注册注解(将类交给 Spring 管理)
四大通用组件注解,
功能完全一致,只是语义不同,都会将类注入Spring容器。
1. @Component
2. @Service
3. @Repository
4. @Controller
四、依赖注入注解(面试重点)
1. @Autowired
2. @Resource
3. @Qualifier
配合 @Autowired,根据 Bean 名称精准注入,解决多实现类冲突。
4. @Value
读取配置文件 application.yml / properties 中的值。
五、配置与属性绑定注解
1. @Configuration
2. @Bean
手动将方法返回对象注册为 Spring Bean,用于第三方组件。
3. @ConfigurationProperties
4. @PropertySource
六、事务注解(重中之重)
@Transactional
七、AOP 切面注解
1. @Aspect
2. @Before
3. @After
4. @AfterReturning
5. @AfterThrowing
6. @Around
环绕通知,
可控制方法执行、拦截、放行、计时,功能最强。
八、全局功能注解
1. @GlobalExceptionHandler / @RestControllerAdvice
2. @Slf4j
3. @NotNull / @NotBlank
4. @EnableWebMvc
5. @EnableTransactionManagement
九、面试高频注解对比总结
1. @Component、@Service、@Repository、@Controller 区别
功能完全一样,只是分层语义不同,Spring 扫描后效果一致。
2. @Autowired 和 @Resource 区别
@Autowired:Spring 注解,默认 byType
@Resource:JSR原生,默认 byName 再 byType
3. @Controller 和 @RestController
@RestController:返回 JSON(接口开发)
4. @Bean 和 @Component
十、注解整体执行流程(终极总结)
程序启动
@SpringBootApplication开启扫描和自动配置
扫描所有
@Component、@Service、@Controller、@Repository装入容器
通过
@Autowired / @Resource自动装配依赖
通过
@Value、@ConfigurationProperties加载配置
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29568843/viewspace-3183187/
,如需转载,请注明出处,否则将追究法律责任。