1、Spring Boot Starter的工作原理?
1、Spring Boot 在启动时扫描项目所依赖的JAR包,寻找包含spring.factories文件的JAR
2、根据spring.factories配置加载AutoConfigure类 。
3、根据 @Conditional注解的条件,进行自动配置并将Bean注入Spring Context。
2、什么是springboot ?
1、用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) ,约定大于配置,去繁从简
2、创建独立的spring引用程序 main方法运行
3、嵌入的Tomcat 无需部署war文件
4、简化maven配置
5、自动配置spring添加对应功能starter自动化配置
3、什么是YAML?
YAML是一种人类可读的数据序列化语言。它通常用于配置文件。
与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。
4、springboot自动配置的原理 ?
在spring程序main方法中 添加@SpringBootApplication或者@EnableAutoConfiguration 会自动去maven中读取每个starter中的spring.factories文件 该文件里配置了所有需要被创建spring容器中的bean。
5、springboot读取配置文件的方式?
springboot默认读取配置文件为application.properties或者是application.yml。
6、springboot集成mybatis的过程?
添加mybatis的starter maven依赖
在mybatis的接口中 添加@Mapper注解
在application.yml配置数据源信息
7、常见的starter包含几个方面的内容?分别是什么?
常见的starter会包括下面四个方面的内容:
1、自动配置文件,根据classpath是否存在指定的类来决定是否要执行该功能的自动配置。
2、spring.factories,非常重要,指导Spring Boot找到指定的自动配置文件。
3、endpoint:可以理解为一个admin,包含对服务的描述、界面、交互(业务信息的查询)。
4、health indicator:该starter提供的服务的健康指标。
两个需要注意的点:
1、@ConditionalOnMissingBean的作用是:只有对应的bean在系统中都没有被创建,它修饰的初始化代码块才会执行,【用户自己手动创建的bean优先】。
2、Spring Boot Starter找到自动配置文件(xxxxAutoConfiguration之类的文件)的方式有两种:
spring.factories:由Spring Boot触发探测classpath目录下的类,进行自动配置。
@EnableXxxxx:有时需要由starter的用户触发查找自动配置文件的过程。
8、自定义springboot-starter注意事项?
1、springboot默认scan的包名是其main类所在的包名。如果引入的starter包名不一样,需要自己添加scan。
@ComponentScan(basePackages = {“com.xixicat.demo”,“com.xixicat.sms”})
2、对于starter中有feign的,需要额外指定
@EnableFeignClients(basePackages = {“com.xixicat.sms”})
3、对于exclude一些autoConfig
@EnableAutoConfiguration(exclude ={MetricFilterAutoConfiguration.class})
9、Spring Boot 2.0 需要的java版本是多少?
Spring Boot 2.0 需要 Java8 或者更新的版本。