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

发布于:2025-09-15 ⋅ 阅读:(25) ⋅ 点赞:(0)

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 打开自动配置功能,也可以关闭某个自动配置的选项
@CompontentScan Spring组件扫描