Spring Boot 入门(2){springBootEnable注解分析,EnableAutoConfiguration注解分析,SpringBoot 事件监听}

Spring Boot@Enable*注解工作原理

表示启用某一项。
@EnableConfigurationProperties //启用某一个特性,可以吧配置文件的属性注入到bean中
配合 @ConfigurationProperties使用
@Async @EnableAsync
//搭配使用 @EnableAsync 表示配置文件启用异步执行 ;@Async表示该类支持异步

原理:

@Import 用来导入类 或者配置类。 (都会被Spring容器托管或加载)。配合类实现 =>>
Interface ImportSelector //接口selectImport方法的返回值,必须是一个class(全程),该class会被spring容器托管起来。使用@import导入这个类,就能实现容器注入bean。
在这里插入图片描述
Interface ImportBeanDefintionRegistrar,该接口registerBeanDefinitions方法的参数有一个BeanDefinitionRegistry,BeanDefinitionRegistry可以用来向Spring容器中动态注入bean。使用@import导入这个类,就能实现往容器中注入bean。
在这里插入图片描述
自定义注解和类体信息交换=>
在这里插入图片描述

@EnableAutoConfiguration注解的原理分析

本质上使用的是 importSelector

在@SpringBootApplicatioin中有。

@EnableAutoConfiguration
作用:从classpath中搜索所有META-INF/spring.factories配置文件。然后将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration对应的key加载到spring容器中。多个用逗号隔开。

内部实现的关键

  1. ImportSelector 该接口的方法的返回值都会被纳入到spring容器中。
  2. SpringFactoriesLoader,该类可以从classpath中搜索所有META-INF/spring.factories配置文件,并读取配置。
    只有spring.boot.enableautoconfiguration为true(默认true)的时候,才能启动自动配置。
    排除类:
    根据class @EnableAutoConfiguration(exclude=XXX.class)
    根据class名称 @EnableAutoConfiguration(excludeName=“com.XXX”)
SpringBoot 事件监听

事件流程:

  1. 自定义事件,一般是继承ApplicationEvent抽象类
  2. 定义事件监听器,一般是实现ApplicationListener接口。
  3. 配置监听器。启动的时候,需要把监听器加入到spring容器中。
  4. 发布事件,使用ApplicationContext.publishEvent发布事件。

– 配置监听器方法:

  1. SpringApplication.addListeners添加监听器
  2. 把监听器纳入到Spring容器中管理
  3. 在application。properties使用context.listener.classes配置项配置 通过配置项:
    context.listener.classes=[类名(全包名)]-- -
  4. 使用@EventListener注解,再方法上加入@EventListener注解,切该类需要纳入spirng容器中管理。
    通过spring.factories机制
    – 使用context.listener.classes配置项配置 原理:(DelegatingApplicationListener)

– @EventListener 原理:(EventListenerMethodProcessor)

Spring Boot扩展分析
  1. ApplicationContextInitializer : 接口是在spring容器执行refreshed之前的一个回调
    注册方法: 方法(1): SpringApplication.addInitializers
    方法(2): 配置文件中添加context.initlizer.classes(多个用逗号隔开)
    方法(3): 通过spring.factories机制

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
2. CommandLineRunner
容器启动后的最后一步回调
步骤:
1. a class implements CommandLineRunner
2. 把类交给容器管理
> 多个 CommndLineRunner通过 @Order([数字]) //数字越小,越先执行。

ApplicationRunner 重写run方法。
在这里插入图片描述
两者区别:
ApplicationRunner 参数是ApplicationArguments,对原始参数进行封装(可以处理key=value的参数)
CommandLineRunner参数原始参数,


SpringBootApplication注解的补充
  exclude                     排除类
  excludeNames          按名字排除
  scanBasePackages  修改扫描路径,该注解默认扫描当前包,及子包下的所有类 

在这里插入图片描述

Banner设置:

  • 关闭
    在这里插入图片描述
  • 自定义(新建文件,写入到新建的txt中)
    或者在 application.properties中加入配置 banner.location=[自定义名称].txt
    banner.charset配置项用来设置编码
    • 图片banner: banner.jgp banner.* /banner.image.location=[图片名称]
      在这里插入图片描述
  • 给配置项指定默认值的其他方式
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值