什么是SpringBoot SpringBoot的作用 SpringBoot的优点 SpringBoot的核心配置文件是什么,有何区别? SpringBoot的配置文件有几种格式,区别是什么? SpringBoot读取配置文件的几种方式 Spring Boot 如何定义多套不同环境配置 SpringBoot的常用注解有哪些? 如何理解SpringBoot中的Starters 如何在 Spring Boot 启动的时候运行一些特定的代码? 如何控制多个ApplicationRunner、CommandLineRunner的启动顺序(优先级)? SpringBoot如何配置多个DispatcherServlet SpringBoot的自动配置原理 Spring Boot中的监视器是什么? Spring SpringMVC SpringBoot以及SpringCloud之间存在什么样的关系? SpringBoot中如何解决跨域问题 SpringBoot打成的jar和普通的jar有什么区别? SpringBoot内嵌了哪些web容器,区别是什么,内嵌容器的优点是什么? 什么是SpringBoot SpringBoot是Spring开源组织下的子项目,是Spring组件的一站式解决方案。
SpringBoot的作用 简化了开发者使用Spring的难度,以约定大于配置的原则,减少了Spring集成各种组件的配置,让开发者更快速的上手。
SpringBoot的优点 快速创建独立运行的spring项目与主流框架集成 内嵌servlet容器,可直接打成jar包运行 用spring-boot-starter-* 实现了各种组件自动依赖与版本控制 与云计算的天然集成 可修改的自动配置,降低了开发难度 避免大量的Maven导入和各种版本冲突 SpringBoot的核心配置文件是什么,有何区别? SpringBoot的核心配置文件是application和bootstrap配置文件。 区别: application:主要用于 Spring Boot 项目的自动化配置 bootstrap: (1)主要用于从额外的资源来加载配置信息 (2)bootstrap优先加载 (3)bootsrap中的属性不能被覆盖 (4)主要用于:一些固定的不能被覆盖的属性和加密/解密等场景
SpringBoot的配置文件有几种格式,区别是什么? application.properties和application.yml,它们的区别主要是书写格式不同。
properties: app.user.name = root app.user.password = root
yml: app: user: name: root password: root 注:yml 格式不支持 @PropertySource 注解导入配置
SpringBoot读取配置文件的几种方式 《Spring Boot读取配置的几种方式》
Spring Boot 如何定义多套不同环境配置 《Spring Boot Profile 不同环境配》
SpringBoot的常用注解有哪些? @Service: 注解在类上,表示这是一个业务层bean @Controller:注解在类上,表示这是一个控制层bean @Repository: 注解在类上,表示这是一个数据访问层bean @Component: 注解在类上,表示通用bean ,value不写默认就是类名首字母小写 @Autowired:按类型注入.默认属性required= true;required = false:在找不到匹配Bean时也不抛出BeanCreationException 异常。 @Bean: 注解在方法上,声明当前方法返回一个Bean @Configuration:注解在类上,表示这是一个IOC容器,相当于spring的配置文件,java配置的方式。 @ConfigurationProperties 赋值,将注解转换成对象。
核心注解: @SpringBootApplication(混合注解)=@ComponentScan+@Configuration+@EnableAutoConfiguration:约定优于配置 @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项 @ComponentScan:Spring组件扫描
如何理解SpringBoot中的Starters Starters可以理解为启动器 它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包。 Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。
如何在 Spring Boot 启动的时候运行一些特定的代码? 实现接口 ApplicationRunner 或者 CommandLineRunner,它们都提供了一个 run 方法
如何控制多个ApplicationRunner、CommandLineRunner的启动顺序(优先级)? 实现org.springframework.core.Ordered接口或者使用org.springframework.core.annotation.Order注解。 Order注解:默认是最低优先级,参数值越小优先级越高 Ordered接口:最高级(数值最小)和最低级(数值最大)
SpringBoot如何配置多个DispatcherServlet SpringBoot2.X之前使用ServletRegistrationBean进行配置。 Spring2.X对ServletRegistrationBean进行了重新设计。 使用DispatcherServletRegistrationBean来继承ServletRegistrationBean类。 我们使用DispatcherServletRegistrationBean进行配置即可。
关于两者之间使用上的差别参考以下两篇文章
《DispatcherServletRegistrationBea配置DispatcherServlet》
《ServletRegistrationBean配置DispatcherServlet》
SpringBoot的自动配置原理 SpringBoot使用@EnableAutoConfiguration注解来实现自动配置。 而@Configuration,@ConditionalOnClass就是自动配置的核心。 首先它得是一个配置文件(META-INF/spring.factories); 其次根据类路径下是否有这个类去自动配置。
《Spring Boot自动配置原理、实战》
《SpringBoot自动配置原来》
Spring Boot中的监视器是什么? Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。 通过这种依赖关系监控我们的应用程序,收集指标,了解流量或数据库的状态变得简单易行。 Actuator主要用于公开有关正在运行的应用程序的运行信息 - 运行状况,指标,信息,转储,env等等。 以下是Boot提供的一些最常见的端点: /health - 显示应用程序运行状况信息(通过未经身份验证的连接访问时的简单“状态”或经过身份验证时的完整详细信息); 它默认不敏感 /info -显示任意应用程序信息; 默认情况下不敏感 /metrics -显示当前应用程序的“指标”信息; 它默认是敏感 /trace -显示跟踪信息(默认情况下是最后几个HTTP请求,SpringBoot 1.X中可用)
更多详情参考《服务监控 Spring Boot Actuator 介绍》
Spring SpringMVC SpringBoot以及SpringCloud之间存在什么样的关系? 首先它们都属于Spring大家族。 其次,它们之间的概念: Spring:一个轻量级的控制反转(IoC)和面向切面(AOP)的容器 SpringMVC:一个企业WEB开发的MVC框架,涵盖面包括前端视图开发、文件配置、后台接口逻辑开发等 SpringBoot:Spring的一套快速配置脚手架,开发者可以快速、简单的上手Spring开发。 SpringCloud:一种云端分布式架构解决方案,基于SpringBoot,有者一套成熟的服务费开发组件。 总结: SpringMVC是使用Spring进行Web开发的一套MVC框架; 而SpringBoot是基于Spring的一套快速开发整合包; SpringCloud是注重的是微服务开发,更关注的是全局微服务的整合和管理,依赖于SpringBoot。
更多详情参考
《Spring SpringMVC SpringBoot SpringCloud概念、关系及区别》
《Spring、SpringMvc、SpringBoot和SpringCloud的联系与区别》
SpringBoot中如何解决跨域问题 在前端,我们可以使用JSONP来解决,但是JSONP只能发送Get请求 在后端,我们可以使用CORS来解决跨域问题。 通常是使用springboot的自动配置全局设置CorsFilter来解决。 同时我们也可以在Controller使用@CrossOrigin注解来局部设置
更多详情参考《SpringBoot解决跨域问题》
SpringBoot打成的jar和普通的jar有什么区别? SpringBoot项目最终打包成的 jar是可执行jar. 这种jar可以直接通过java -jar xxx.jar 命令来运行. 这种jar不可以作为普通的jar被其他项目依赖,即使依赖了也无法使用其中的类。 虽然都是jar包,但是内部结构是完全不同的,因此一个可以直接执行,另一个则可以被其他项目依赖。
更多详情参考《SpringBoot打包的jar包与普通的jar包有什么区别》
SpringBoot内嵌了哪些web容器,区别是什么,内嵌容器的优点是什么? Spring Boot内嵌容器支持Tomcat、Jetty、Undertow 区别:内嵌Tomcat、Jetty无法执行jar形式的jsp;Undertow不支持JSP。其中Undertow性能上更优秀一些,Tomcat为默认的web容器。 内嵌容器的优点:减少外部容器依赖,可移植性高、易测试、易部署 |
|