Springboot笔记

Springboot笔记

第三方与官方的jar包有什么不同?

​ 官方以spring-boot-start-xxx,condition条件满足

​ 第三方 xxx-spring-boot-start

Springboot启动类注解

首先在springboot启动类上只有一个 @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}
)}
  • @SpringBootConfiguration  主要是一个配置类
    
  • ElabeAutoConfiguration

//主要是使用这两个注解导入类
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})

Spring 的注解发展

  1. Spring 2.5 @Controller @Component 等
  2. Spring 3.0 @Configuration @bean --使用配置类解决xml
  3. Spring 3.1 使用注解模块化,@EablexxautoConfiguraction @import

@import 导入类时有四种方式

  • 直接导入class类

    • @import({xxx.class,xxxxxx.class})
  • 导入配置类(使用@configuration+@bean 配置的类)

    • @import(xxxx.class)----xxxx类中使用配置类加入了其他的类
  • 导入一个select数组-----Springboot 中使用的此种方式

    • 定义一个类 xxx implements importSelector
    • 实现 selectimport 方法 , 返回数组(类名 xxx.class.getname)
    • @import(select.class)
  • 直接返回对象 registrar

    image-20201215221649101

    • @import(xxx.class)

EableConfiguraction

@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
  • AutoConfigurationImportSelector.class

    • 加载springboot的配置类,其中方法为

      public String[] selectImports(AnnotationMetadata annotationMetadata) {
              if (!this.isEnabled(annotationMetadata)) {
                  return NO_IMPORTS;
              } else {
                  AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader.loadMetadata(this.beanClassLoader);
                  AutoConfigurationImportSelector.AutoConfigurationEntry autoConfigurationEntry = this.getAutoConfigurationEntry(autoConfigurationMetadata, annotationMetadata);
                  return StringUtils.toStringArray(autoConfigurationEntry.getConfigurations());
              }
          }
      
      • getAutoConfigurationEntry 方法中的 getCandidateConfigurations 方法

                List<String> configurations = SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());
        
        

        从SpringFactoriesLoader.loadFactoryNames 获取配置文件名

spring.factories中 以kv键值对存储

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值