Spring实战

Spring5 学习记录。

SpringBoot刚出来时用过一点,从Spring Boot2回看,发现这个生态真是进步巨大。

起步

项目初始化

Initializr

依赖管理

名字包含starter的依赖并不包含实际的代码库,只是为了方便项目依赖版本管理。

运行

  • java -jar xxx.jar
  • mvn spring-boot:run
  • Spring Dashboard

学习笔记

Spring Boot带来的好处:

  • starter dependencies

  • autoconfiguration

  • Actuator运行时信息监控

  • 灵活的环境配置

  • 增强的测试支持

  • 尽量使用Spring Boot,必要时显示声明Java样式的配置。

  • components或叫做beans支持在Spring application context显式定义为Java或XML(旧格式)

  • Component Scanning:用于自动发现并为Spring application context创建bean

常用注解:

  • @Controller
  • @Component
  • @Service
  • @Repository

Model模型

MVC.

@ModelAttribute

View模板

不推荐使用后端模板引擎,建议前后端分离。

开发环境禁用缓存:

# application.properties
spring.freemarker.cache=false
spring.thymeleaf.cache=false

FreeMarker

Mustache

Thymeleaf

这个项目代码上次更新还是一年前(2018年10月),还是远离这个模板的好。

@{…} 操作符代表一个context-relative路径

JSP

官方强烈不推荐JSP,因为它的依赖实现通常是容器做的(Tomcat,Jetty等),且默认只识别WEB-INF文件夹。

这意味着只支持war包的形式,使用将非常受限。

Controller

  • RestController : Rest接口服务

路由

  • @RequestMapping 用于类
  • @GetMapping等用于handler方法
  • 返回的通常是视图的逻辑名
@Configuration
public class WebConfig implements WebMvcConfigurer {

  @Override
  public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("home");
  }

}

HTTP请求

  • @PathVariable(“name”) : 请求URL变量
  • @RequestParam : 请求参数,包含 query parameters, form parameters, files
  • @RequestBody : 请求payload

数据类

Validation

字段验证:

  • @NotNull
  • @Size
  • @NotBlank
  • @Digits
  • @Pattern 正则

Hibernate内置:

  • @CreditCardNumber

添加在数据类前:

  • @Valid

测试

pom.xml依赖于spring-boot-starter-test。

注: 2.0.9依赖于JUnit4, 但2.2.x分支已切换到JUnit5.

  • @SpringBootTest
  • @WebMvcTest

辅助工具

  • spring-boot-devtools
    • 自动重启(类修改)
    • ~/.spring-boot-devtools.properties 全局设置

扩展阅读