美文网首页
【Spring Boot】自动配置原理和日志整合

【Spring Boot】自动配置原理和日志整合

作者: 大数据阶梯之路 | 来源:发表于2019-10-20 14:41 被阅读0次

主要看Spring Boot源码来进行解析

一、看源码理解自动配置原理

  • 1、当我们启动一个springboot应用,加载主配置类时,就会开启自动配置功能@EnableAutoConfiguration注解。使用IDEA开发工具,按住ctrl+鼠标左键即可进入对应注解源码,可一路对应地进入查看源码。 图片.png
  • 2、@EnableAutoConfiguration注解主要是利用导入一个自动配置选择器来导入一些自动配置组件到容器中 图片.png 进入到自动配置选择器中查看源码,具体是这样的,先通过public String[] selectImports(AnnotationMetadata annotationMetadata)方法获取configurations配置属性 图片.png 而configurations属性是通过protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes)这个方法获取候选的配置值的 图片.png
  • 3、进入loadFactoryNames方法,可查看到调用了loadSpringFactories方法 图片.png 接着查看loadSpringFactories方法,此方法会扫描所有jar包类路径下:META-INF/spring.factories,然后把扫描到的文件内容包装成一个Properties对象,然后从properties对象中获取到@EnableAutoConfiguration.class类(类名)对应的值,然后把它们添加到容器中,只有当自动配置类进入到了容器中,自动配置功能才能起作用。 图片.png 图片.png

总结

  • 1、spring boot启动时会加载大量的自动配置类
  • 2、我们在用的时候可以看看我们需要的功能在spring boot中有没有默认写好的自动配置类
  • 3、然后我们再看看自动配置类中写好了哪些组件给我们用,如果有我们需要的组件,我们就不需要再配置了
  • 4、如果没有,我们可以给容器中的自动配置类添加组件,此时会从properties类中获取某些属性,这样我们就可以在配置文件中指定这些属性的值

xxxAutoConfiguration 自动配置类
xxxProperties 封装配置文件中相关属性

二、日志框架

当我们在开发时候,经常使用System.out.println("测试")来打印测试数据逻辑,然后测试完为了代码的整洁又得删掉这些测试代码,当我们在开发大型系统时,大量的这种语句开启关闭很降低开发效率,所以我们可以引入日志框架来记录系统的一些运行信息。
为了引入的健壮性,通常是写一个统一的接口层,俗称日志门面(日志的抽象层),之后给项目导入具体的日志实现就行了。

市面上常见的日志框架有:
  • 日志门面:jcl、slf4j、jboss-logging
  • 日志实现:log4j、log4j2、logback、jul

spring boot底层选用 slf4j+logback 作为日志记录的方式

具体整合使用

图片.png 图片.png 不过这会面临一个问题,就是项目不止只有springboot,还会整合其他的框架,而其他的框架用的日志记录又不都是slf4j+logback,所以springboot就使用中间转换包的形式把其他日志框架先替换为slf4j包。还有在整合其他框架的时候,一定要把这个框架的默认日志依赖去除掉,这样springboot就能自动适配所有的日志了。类似下图这样 图片.png 图片.png

日志有5种级别:trace(追踪信息)-->debug(调试信息)-->info(自定义信息)-->warn(警告信息)-->error(报错信息) 优先级是从低到高的
而且从上图我们可以看到,trace信息和debug信息没有打印出来,说明springboot默认是只打印info及以上级别的信息的,如果要想设置打印级别,可通过修改配置文件的形式来配置。

图片.png

相关文章

网友评论

      本文标题:【Spring Boot】自动配置原理和日志整合

      本文链接:https://www.haomeiwen.com/subject/gsxamctx.html