springboot的自动装配


一、springboot是什么?

springboot本质上就是spring,不过他并不像spring那样需要繁琐的配置,简化了开发流程,但是他并不提供spring的核心功能,他只是spring的一个脚手架。

通过引入依赖(Starter),从spring.factories文件中获取到对应的需要进行自动装配的类,并生成相应的Bean对象,然后将它们交给spring容器来帮我们进行管理,这就是springboot的自动装配。

二、spring.factories文件的意义何在

在我们主程序入口,关于@SpringBootApplication这个注解:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
    
     @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
        @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
    
    

@ComponentScan注解指扫描@SpringBootApplication注解的入口程序类所在的basepackage下的所有带有@Component注解的bean,从而注入到容器当中。

但是如果是加入maven坐标依赖的jar包,就是项目根目录以外的Bean。@EnableAutoConfiguration注解来注册项目包外的bean。而spring.factories文件,则是用来记录项目包外需要注册的bean类名。

三、springboot自动装配的流程

springboot启动的时候会创建一个**Application对象,在对象的构造方法里面会进行一些参数的初始化工作,最主要的是判断当前应用程序的类型以及设置初始化器以及监听器,并在这个过程中会加载spring.factories文件,当某个AutoConfiguration类满足其注解@Conditional指定的生效条(Starters提供的依赖、配置或Spring容器中是否存在某个Bean等)时,实例化该AutoConfiguration类中定义的Bean,并注入Spring容器,就可以完成依赖框架的自动配置。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44153131/article/details/129678752
今日推荐