springboot自动配置原理
配置文件到底能写什么呢?很多----参照官方文档的最后一个模块,但是还是很多,看懂原理就很简单了
首先springBoot加载主配置类@SpringBootApplication,点进去是有一个自动配置注解,和一个选择器进行导入需要的import主键,父类就是一个导入方法,叫做获取候选的配置,从类路径下得到一个资源,在类路径下的所有jar包,初始的jar是一些url,最后包装程配置文件,然后从配置文件中获取所需要的值,反方向的获取到需要的配置,添加到容器。实际就是将META-INF/spring.factory下的所有的自动配置的值。后缀名字是xxxAutoConfig都是容器的组件,用它做自动配置。自动配置类。每一个自动配置类进行自动配置功能。这些条件是基于一个验证注解,@conditional的判断。
*********************************
四句话概括主要内容:
1. springBoot会自动加载大量的自动配置类
2. 看看SpringBoot有没有自动配置好的类、
3. 看看配置好的都配置了什么。有的我们就不需要在写
4. 给容器添加组件的时候,会从配置文件获取。可以再配置文件中指定这些值、
一个快捷键 ctrl+n 查找这个指定的类来看自动配置类。
那怎么判断哪些类被自动配置呢?
(1)一项一项的看? 我这么写肯定是不采取的
(2)在配置文件中加入 debug=true模式,控制台会告诉我们哪些被调用,自动配置报告。同时也会告诉没有启用的。
SpringBoot的日志。
市面上常用的日志框架有?
JUC JCK JBoss-logging log4j等……
但是springboot选择呢了SLF4和logback,对应的jar可以看下slf4j的官方文档。
但是这样会有一个问题,一个系统可能会涉及多个框架,每个框架都会有不一样的日志文件,那么怎么才能统一呢?
1.将系统中的框架依赖全部排出
2.将中间包替换(SLF4J文档)
3.再倒入SLF4j的实现
springboot的默认配置
logging.level.com.fd=trace;设置等级
logging.path=
logging.file= 都是设置路径
logging.pattern.comsole= 在控制台(还可以设置样式输出)
不同环境下的日志输出,用到日志的一个prefile属性,之前在配置文件中有详细讲过,指定不同环境下的不同输出
spring.prfile=dev