# SpringBoot

# SpringBoot各个注解作用

1. #### **@ConditionalOnMissingBean**
    
    
    1. 它是修饰bean的一个注解，主要实现的是，当你的bean被注册之后，如果而注册相同类型的bean，就不会成功，它会保证你的bean只有一个，即你的实例只有一个，当你注册多个相同的bean时，会出现异常，以此来告诉人员。
2. #### **@EnableAutoCfiguration**
    
    
    1. **开启自动配置**
3. #### **@RestController**
    
    
    1. **此注解就是@Controller和@ResponseBoby的集合，使用在controller层的，意思就是告诉控制层里面的方法都是以json的格式进行输出。**
4. #### **@Conditional** 
    
    
    1. **注解是用来匹配只有满足所有指定条件才能将Bean注册到Spring上下文中**
5. #### **@Repository：**
    
    
    1. **该注解用于标注数据访问组件，DAO组件的。**
6. #### **@ConditionalOnClass**
    
    
    1. **表示指定的类存在才会解析处理本配置**
7. [![image.png](http://wiki.shopqorg.com/uploads/images/gallery/2023-08/scaled-1680-/image.png)](http://wiki.shopqorg.com/uploads/images/gallery/2023-08/image.png)

# 自动装配原理

1. 通过 **@EnableAutoConfiguration** 注解解析此注解上的 **Import(AutoConfigurationImportSelector.class) 加载spring.factories**
2. **通过 @Conditional等注解配合筛选出符合条件的自动配置类**
3. **通过Bean工厂实例化并处理配置**

# 配置文件加载原理，加载顺序是怎样的

1. **是通事件监听的方式加载配置文件的**
2. <div>加载顺: 
    1. classpath:/
    2. classpath:/config/,
    3. file:./
    4. file:./config/\*/
    5. file:./config/"
    
    </div>