SpringBoot的主要优点:

1.开发基于Spring 的应用程序很容易。

2. Spring Boot项目所需的开发或工程时间明显减少,通常会提高整体生产力。

3. Spring Boot不需要编写大量样板代码、XML配置和注释。

4. Spring 引导应用程序可以很容易地与Spring 生态系统集成,如Spring JDBC、Spring ORM、Spring Data、Spring Security等。

5. Spring Boot遵循“固执己见的默认配置”,以减少开发工作(默认配置可以修改)。

6. Spring Boot应用程序提供嵌入式HITP服务器,如Tomct和Jetty),可以轻松地开发和测试 web应用程序。

7. Spring Boot提供命令行接口(CLI)工具,用于开发和测试Spring Boot应用程序,如Java或Groovy。

8. Spring Boot 提供了多种插件,可以使用内置工具(如Maven和Gradle)开发和测试Spring Boot应用程序。

SpringBoot 支持的内嵌Servlet容器

Tomcat 9.0 4.0

Jetty 9.4 3.1

Udertow 2.0 4.0

如何在SpringBoot应用程序中使用Jetty而不是Tomcat?

在pom.xml文件中修改依赖项或者在build.gradle中修改就行

解释下@SpringBootApplication注解

可以看做是@Configuration @EnableAutoConfiguration @ComonentScan这三个注解的集合

@Configuration:允许在上下文中注册额外的bean或导入其他配置类

@EnableAutoConfiguration:启用SpringBoot的自动配置机制

@ComonentScan:扫描被@Component(@Service,@Controller)注解的bean,注册默认扫描该类所在包下的所有类

SpringBoot的自动配置是如何实现的

@EnableAutoConfiguration是启动自动配置的关键,通过Spring提供的@Import注解导入了AutoConfigurationImportSelector类

AutoConfigurationImportSelector类中的getCandidateonfigurations方法会将所有的自动配置类的信息以List形式返回。这些配置信息会被Spring容器作bean来管理

这上面就是自动配置信息,还差个自动配置实现

@Conditional注解,@ConditionalOnClass,@ConditionOnBean等

开发RESTful Web服务常用的注解有哪些?

SpringBean相关:

@Autowired:自动导入对象到类中,被注入的类被SpringIOC容器管理

@RestController:@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直接填入HTTP响应体中,是REST风格的控制器

@Component:通用的注解,可以标注任意类为Spring组件,如果一个Bean不知道属于哪个层,可以使用@Component注解标注

@Repository:对应持久层即Dao层,主要用于数据库相关操作

@Service:对应服务层,主要涉及一些复杂的逻辑,需要用到Dao层

@Controller:对应SpringMVC控制层,主要接受用户请求并调用Servic层返回数据给前端页面

处理常见的HTTP请求的类:

@GetMapping:Get请求

@PostMapping:Post请求

@PutMapping:Put请求

@DeleteMapping:Delete请求

前后端传值:

@RequestParam以及@Pathvariable:前者获取查询参数后者获取对应路径参数

@RequestBody:用于读取Request请求的body部分并且Content-Type为application/json格式的数据,接收到的数据之后自动将数据Java对象上去。系统会使用HttpMessageConverter或者自定义的HttpMessageConverter将请求的body中的Json字符转换为Java对象

SpringBoot常用的两种配置文件

application.propertioes 和 application.yml

SpringBoot常用的读取配置文件方法有哪些

1. @Value 注解

2. @ConfigurationProperties 注解

3. Environment 对象

4. @PropertySource 注解

常见的Bean映射工具有哪些?

我们常在代码中会把一个数据结构封装成DO,SDO,DTO,VO等,但是这些Bean中的属性大部分相同,所以使用属性拷贝类的工具可以节省set和get操作。

常见的Bean映射工具:Spring BeanUtils、Apache BeanUtils、MapStruct、ModelMapper、Dozer、Orika、JMapper

由于Apache BeanUtils、ModelMapper、Dozer性能太差,一般推荐用MapStruct

SpingBoot如何监控系统实际运行状况

可以使用SpringBootActuator来对SpringBoot项目进行监控

在pom.xml文件中spring-boot-starter-actuator 依赖

集成了这个模块后你的SpringBoot项目就自带了一些开箱即用的获取程序运行时的内部状态信息的API

比如你能够通过GET方法去访问/heath,可以获得应用程序对应的健康指标

SpringBoot如何做请求参数校验

Spring Boot程序做请求参数校验的话只需要 spring-boot-starter-web依赖就够了,它的子依赖包含了我们所需要的东西。

16.1.校验注解

JSR 提供的校验注解:

@Null 被注释的元素必须为null

@NotNull 被注释的元素必须不为null@AssertTrue被注释的元素必须为true@AssertFalse被注释的元素必须为false

@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值@Max( value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值

@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值@DecimalMax(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值@Size(max=, min=)被注释的元素的大小必须在指定的范围内

@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内@Past被注释的元素必须是一个过去的日期

@Future 被注释的元素必须是一个将来的日期

@Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式

Hibernate Validator提供的校验注解:

@NotBlank(message =) 验证字符串非null,且长度必须大于0.@Email被注释的元素必须是电子邮箱地址

@Length(min=,max=) 被注释的字符串的大小必须在指定的范围内.@NotEmpty被注释的字符串的必须非空

@Range(min=,max=,message=) 被注释的元素必须在合适的范围内

16.2验证请求体(RequestBody)

在需要验证的参数上添加上@Valid注解,验证失败会抛出MethArgumentNotValidException。默认情况下,Spring会将此异常转换为HTTP Status 400

16.3验证请求参数(Path Variables 和 Request Parameters)

不要忘记在类上加上Validated注解,这个参数可以告诉Spring去检验方法参数

如何用SpringBoot实现全局异常处理

可以使用@ControllerAdvice和@ExcepetionHandler处理全局异常

青い空