SpringBoot原理

SpringBoot的起步依赖

SpringBoot的起步依赖是指在创建新的SpringBoot项目时,通过一个或多个起步依赖,可以快速集成一系列常用的第三方库。
Spring Boot比起Spring FrameWork更便捷就是因为依赖传递的存在。SpringBoot中我们不需要在一个一个的引入依赖,我们只需要引入一个主依赖,SpringBoot会自动将所需的依赖通过依赖传递引入,也就是说A依赖B,B依赖C,那么我们只需要引入A就可,B和C会通过依赖传递引入进来。

SpringBoot的自动配置原理

在SpringBoot项目中,当我们引入自己写好的第三方类时,如果第三方类不在当前项目的目录下,会造成引入失败。原因是SpringBoot在启动时,只会在当前项目所在的包来查找第三方类,所以我们要指定出第三方类的路径。

例如:导入下列第三方类

  • 方案一:通过@ComponentScan(需要扫描的路径)来进行组件扫描。
  • 方案二:通过@Import(类的字节码文件)注解导入。使用@Import导入的类会被Spring加载到IOC容器中。
    导入的形式有:导入普通类,导入配置类,导入ImportSelector接口实现类,@EnableXxx注解所封装的@Import注解。

    注:通过@Import来进行引入,不符合启动类的简洁,我们可以使用自定义@EnableXxxx注解来封装@Import注解(方案三)
  • 方案三:自定义注解EnableXxx,在注解中,通过@Import注解来引入所需配置的第三方类。

    在启动类上加上我们自定义的注解就好

源码跟踪

@SpringBootApplication注解标识在SpringBoot的工程引导类上(启动类),是SpringBoot最重要的注解。该注解由三部分组成组成:

  • @SpringBootConfiguration:该注解与@Configuration注解作用相同,用来声明当前也是一个配置类。
  • @ComponentScan:进行组件扫描,默认的扫描范围为当前引导类所在包及其子包。
  • @EnableAutoConfiguration:是SpringBoot实现自动化配置的核心注解。

在SpringBoot中,一般不是所有引入的依赖都会在SpringBoot启动时创建Bean对象进IOC容器里的,都会根据需求使用@Conditional注解来进行条件判断,满足条件后才会注册相对应的bean对象进入Spring IOC容器中。
@Conditional本身是一个父注解,起常用的子注解有:

  • @ConditionalOnClass:判断环境中是否有对应的字节码文件,有才注册bean对象到IOC容器。
  • @ConditionalOnMissingBean:判断环境中没有对应的bean(类型或名称),才注册bean对象到IOC容器。
  • @ConditionalOnProperty:判断配置文件中有对应属性和值,有才注册bean对象到IOC容器中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值