SpringBoot的自动装配(一)

一、什么是SpringBoot的自动装配

    SpringBoot的自动装配是指:SpringBoot会自动将一些配置类的bean注册到ioc容器,我们可以在需要的地方使用@Autowired或@Resource等注解来使用它。
    自动的表现形式就是我们只需要引我们享用功能的包,其他的配置完全不需要管,springboot会自动注入这些配置备案,我们直接使用就行。
    自动装配也是SpringBoot的一个重要的特点,他帮我们做了很多的配置。

二、它是怎样实现的?

    1、run方法
        当启动一个SpringBoot项目时,本质上就是执行了地洞累中的主方法,然后执行了run方法。

启动类中实现的三方方式

    ConfigurableApplicationContext这个对象就是 ApplicationContext接口的一个子接口。
    其实SpringBoot项目的启动,本质上就是一个Spring的初始化操作。
2、@SpringBootApplication
    点开这个注解可以发现,这是一个组合注解,包括:

        这些注解中,前四个是JDK中的自动元注解,是用来修饰注解的注解。@ComponentScan是用来扫描路径的,如果不置顶特定的扫描路径的话,扫描的路径是当前修饰的类所在的包及其子包。而@SpringBootConfiguration这个注解的本质就是@Configuration注解。所以在这里面跟SpringBoot自动装配有关系的就只有一个了:@EnableAutoConfiguration
    3、@EnableAutoConfiguration

@Target({ElementType.TYPE})  :用于生命注解作用范围,TYPE表示:可用来修饰接口、嘞、枚举、注解;
@Retention(RetentionPolicy.RUNTIME):用于声明注解的声明周期,RUNTIME表示:在运行时有效
@Documented:用于声明注解文档化,如果呗此祝姐修饰,就可以用javadoc进行记录,成为一个公共的API
@Inherited:用于加强继承效果的
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})

    @AutoConfigurationPackage不是用来实现自动装配的,在Spring中,他是用来扫描实体类Entity等注解的。所以重点是在@Import上。
    @Import注解实现了AutoConfigurationImportSelector类,自动装配也是在这个类中进行了具体的实现。自动装配实现的就是该类中的selectImports方法里。通过selectImports方法,取到spring.factories文件下的一系列类名,随后将这些类自动加载至IOC容器中。
    4、总结
        SpringBoot的自动装配也就是通过@EnableAutoConfiguration注解,加载AutoConfigurationImportSelector类中的selectImports方法,进而扫描spring.factories文件下的自动配置类,并将其装配到IOC容器的过程。

你可能感兴趣的:(SpringBoot的自动装配(一))