Bootstrap

Springboot自动配置的原理

先拿redis来举个例子

第一步导入依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

第二步配置

spring:
redis:
database:host:127.0.0.1
port:6379

第三步依赖注入使用到redis

@Autowiredprivate 
RedisTemplate redisTemplate;

这个依赖配置主要是依靠三个注解实现的首先是@springbootApplication核心注解里面的注解,因为它里面有许多注解组合而成的。其中对于自动配置相关的有:

@SpringBootConfiguration:它是@Configuration的一个配置类

@ComponentScan:它会扫描如果你标准了@service等Bean注解。

@EnablgAutoConfiguration:它是启动Spring自动配置的功能点开之后可以看到以下的属性。

这其中最核心的注解是@AutoConfigurationPackage和@Import这两个注解

@AutoConfigurationPackage:它是将添加到该注解的类自动添加为自动管理,也就是会将启动类作为自动配置的管理。

@Import:使用于导入配置类到当前文件上下文里面。

在@AutoConfigurationPackage里面是继承了@DeferredImportSelector而,@DeferredImportSelector又继承了@ImportSelector,它实现了selectImports的接口方法,这个方法是用于去获取所有符合条件的类名,这些类会加载到IOC容器里面。

回到上面@EnablgAutoConfiguration里面

这里面的exclude和excludeName是告诉我们需要去排错某些类,不去做自动加载。

;