欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > SpringBoot原理-原理分析-源码跟踪

SpringBoot原理-原理分析-源码跟踪

2024/10/24 9:24:36 来源:https://blog.csdn.net/2302_77782275/article/details/140735005  浏览:    关键词:SpringBoot原理-原理分析-源码跟踪
@SpringBootApplication中有以下注解:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

其中前四个为源注解,修饰注解的注解,不用看

其中@EnableAutoConfiguration底层封装了@Imporrt注解

其中指定的是ImportSelector的实现类,这个实现类当中就实现了ImportSelector中的一个方法

返回值为String类型的数组,这个数组封装的就是我要导入SpringIOC容器中的类的全类名,

在这个方法加载了两个文件,如下:

 

到Spring3.X版本之后,spring.factoies这个文件就会被彻底的移除掉,所以我们要导入的配置类直接定义在第一个文件中,这个文件定义配置类的全类名,就可以通过@Bean注解来声明一个一个的Bean对象,最终,SpringBoot项目在启动时,就会加载这个配置文件中的配置类,将这些配置类的信息封装到String类型的数组中,最终通过Import这个注解,将这些配置类全部加载到Spring的IOC容器当中,并不是全部注册为IOC容器中的Bean,而会根据@Conditional注解条件装配

在自动配置类中,在声明Bean时:

方法上加了Bean注解以外,还加了Conditional开头的这类注解,就是条件装配的注解

@Bean
//@ConditionalOnClass(name = "io.jsonwebtoken.Jwts")//环境中指定存在这个类,才会将该Bean加入IOC容器中
//@ConditionalOnMissingBean//不存在HeaderParser类型的Bean,才会将该Bean加入IOC容器中--指定类型(value)或者名称(name属性)
@ConditionalOnProperty(name = "name",havingValue = "itheima")//配置文件中存在指定的属性与值,才会将该Bean加入到IOC容器中
public HeaderParser headerParser(){return new HeaderParser();
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com