第四章 Spring Boot 基础
4.1 了解Spring Boot
项目结构
src/main/java //入口类,等
src/main/resources //静态文件和配置文件
src/test/java //测试
入口类
@SpringBootApplication
热部署
更好的支持调试,可以不必重启让代码的改动生效。
自定义banner
可以定制banner的内容,格式
可以关闭banner
4.2 常用注解annotation
可以用于标注:包,类,方法,变量
系统注解
@Override
@Deprecated
@SuppressWarnnings
Spring Boot 常用注解
类的注解
@SpringBootApplication
@ComponentScan
@EnableAutoConfiguration
@RestController // JSON/XML
@RequestMapping
@Controller //MVC
@Service
@Autowired
@Component
@Repository
方法的注解
@Bean
@ResponseBody
@RequestBody
@PathVariable
4.3 配置文件
分为 properties和yml
springboot中如果application.yml和application.properties都存在yml和properties文件的执行顺序:
如果工程中两个文件都存在,那么yml文件会先执行,后执行properties文件。properties文件会把yml文件覆盖,所以工程中一般都是只留一种即可。
可以配置多环境
指定活动环境的方法,在application.yml中指定如下:
spring:
profiles:
active:dev
4.4 Starter
开箱即用特性
第五章 分层开发Web 应用程序
5.1 MVC模式
5.2 视图技术:Thymeleaf
5.3 控制器
5.4 模型
5.5 实例:实现MVC模式的Web应用程序
-
添加依赖
-
创建实体
package com.example.demo.model; import lombok.Data; /** * Author: longzhonghua * Date: 3/22/2019 10:42 AM */ @Data public class User { //定义id private long id; //定义用户名 private String name; //定义用户年龄 private int age; }
-
创建控制器
package com.example.demo.controller; import com.example.demo.model.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.servlet.ModelAndView; /** * Author: longzhonghua * Date: 3/22/2019 10:42 AM */ @Controller public class MVCDemoController { //映射URL地址 @GetMapping("/mvcdemo") public ModelAndView hello() { //实例化对象 User user=new User(); user.setName("liuhy"); user.setAge(38); //定义mvc中的视图模板 ModelAndView modelAndView=new ModelAndView("mvcdemo"); //传递user实体对象给视图 modelAndView.addObject("user",user); return modelAndView; } }
-
创建用于展示的视图
<!DOCTYPE html> <!--thymeleaf模板支持--> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div> <!-- 显示由控制器传递过来的实体user的值--> <div th:text="${user.name}"></div> <div th:text="${user.age}"></div> </div> </body> </html>
-
可以访问了
http://localhost:8080/mvcdemo
5.6 实例:验证数据
内置验证器的功能很强大
package com.example.demo.entity;
import com.example.demo.MyConstraint;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.*;
import java.io.Serializable;
/**
* Copyright (C), 2019-2019, XXX有限公司
* FileName: User
* Author: longzhonghua
* Date: 2019/4/18 18:12
*
* @Description: $description$
* History:
* <author> <time> <version> <desc>
* 作者姓名 修改时间 版本号 描述
*/
@Data
public class User implements Serializable {
private Long id;
@NotBlank(message = "用户名不能为空")
@Length(min = 5, max = 20, message = "用户名长度为5-20个字符")
private String name;
@NotNull(message = "年龄不能为空")
@Min(value = 18 ,message = "最小18岁")
@Max(value = 60,message = "最大60岁")
private Integer age;
@Email(message = "请输入邮箱")
@NotBlank(message = "邮箱不能为空")
private String email;
@MyConstraint // 需要自己定义,详见原著
private String answer;
}
可以自定义验证器
第六章 响应式编程 WebFlux
欠奉(因为WebFlux不支持MySQL)