1. springboot比spring好在哪
- springboot简化Spring,使用properties和yml来替代xml文件,抛弃了冗余的xml文件
- 嵌入了http服务器以及多种插件,Spring Boot而且内嵌了各种servlet容器,Tomcat、Jetty等
- 简化配置(spring-boot-starter-web 启动器自动依赖其他组件,简少了 maven 的配置)
- 自动配置
- 应用监控
- 无需部署war文件
对比spring家族系列
Spring和Spring MVC要配置大量的参数
SpringBoot通过一个自动配置和启动的项就可解决
2. Java基础之SPI机制
SPI 机制,全称为 Service Provider Interface,是一种服务发现机制。它通过在 ClassPath 路径下的 META-INF/services 文件夹查找文件,自动加载文件里所定义的类。
SPI 的约定
服务提供方需要通过一些约定告诉系统自己所提供的服务的位置,java9 之后一共有两种约定方式:
- 通过在 META-INF/services/ 目录下配置相关文件实现。
- 通过 java9 jigsaw 的导出语句指定服务位置。
3. SpringBoot自动装配原理实现
自动装配:自动把第三方的组件自动装载到ioc容器中,不需要开发人员再去写bean相关的一个配置。在springboot的启动类上,只需要在启动类上加上@SpringbootApplication注解就可以实现主动装配,本身是一个复合注解,真正实现自动装配的注解:
启动类的@SpringBootApplication注解由**@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan**三个注解组成,三个注解共同完成自动装配;
- @SpringBootConfiguration 注解标记启动类为配置类
- @ComponentScan 注解实现启动时扫描启动类所在的包以及子包下所有标记为bean的类由IOC容器注册为bean
- @EnableAutoConfiguration通过 @Import 注解导入 AutoConfigurationImportSelector类,然后通过AutoConfigurationImportSelector 类的 selectImports 方法去读取需要被自动装配的组件依赖下的spring.factories文件配置的组件的类全名,并按照一定的规则过滤掉不符合要求的组件的类全名,将剩余读取到的各个组件的类全名集合返回给IOC容器并将这些组件注册为bean
4. 如何理解Spring Boot中的Starter?
Starter组件几乎完美的体现了Spring Boot里面约定优于配置的理念,Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring 及其他技术,而不需要到处找示例代码和依赖包。如你想使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了
Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。
常用的 starter 有哪些
spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持
spring-boot-starter-data-jpa 数据库支持
spring-boot-starter-data-redis redis数据库支持
spring-boot-starter-data-solr solr支持
mybatis-spring-boot-starter 第三方的mybatis集成starter
5. Spring Boot 中的监视器是什么?
Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。
6. 跨域问题如何解决
跨域问题可以通过CORS进行解决
实现WebMvcConfigurer
接口然后重写addCorsMappings
方法解决跨域问题