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();
}
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值