第四章 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应用程序

  1. 添加依赖

  2. 创建实体

    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;
    }
  3. 创建控制器

    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;
    }
    }
  4. 创建用于展示的视图

    <!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>
  5. 可以访问了

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)

龙中华著《Spring Boot实战派》读书笔记之基础篇的更多相关文章

  1. 《spring boot 实战》读书笔记

    前言:虽然已经用spring boot开发过一套系统,但是之前都是拿来主义,没有系统的,全面的了解过这套框架.现在通过学习<spring boot实战>这本书,希望温故知新.顺便实现自己的 ...

  2. [Spring Boot Reference Guide] 读书笔记一 Getting Started

    8. Introducing Spring Boot Goals of spring boot: Provide a radically faster and widely accessible ge ...

  3. SpringBoot实战派读书笔记---响应式编程

    1.什么是WebFlux? WebFlux不需要Servlet API,在完全异步且无阻塞,并通过Reactor项目实现了Reactor Streams规范. WebFlux可以在资源有限的情况下提高 ...

  4. 《Spring Boot 实战纪实》之过滤器

    导航 什么是过滤器 Spring的过滤器 Filter定义 过滤的对象 典型应用 过滤器的使用 Filter生命周期 过滤器链 自定义敏感词过滤器 新增自定义过滤器 添加 @WebFilter注解 添 ...

  5. spring boot实战(第十三篇)自动配置原理分析

    前言 spring Boot中引入了自动配置,让开发者利用起来更加的简便.快捷,本篇讲利用RabbitMQ的自动配置为例讲分析下Spring Boot中的自动配置原理. 在上一篇末尾讲述了Spring ...

  6. spring boot实战(第十二篇)整合RabbitMQ

    前言 最近几篇文章将围绕消息中间件RabbitMQ展开,对于RabbitMQ基本概念这里不阐述,主要讲解RabbitMQ的基本用法.Java客户端API介绍.spring Boot与RabbitMQ整 ...

  7. Spring Boot实战系列-----------邮件发送

    快速导航 添加Maven依赖 配置文件增加邮箱相关配置 Service.Test项目代码构建 五种邮件发送类型讲解 文本邮件 html邮件 附件邮件 html内嵌图片邮件 模板邮件 问题汇总 添加ma ...

  8. Spring Boot 实战与原理分析视频课程

    Spring Boot 实战与原理分析视频课程 链接:https://pan.baidu.com/share/init?surl=PeykcoeqZtd1d9lN9V_F-A 提取码: 关注公众号[G ...

  9. spring boot实战(第一篇)第一个案例

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   spring boot实战(第一篇)第一个案例 前言 写在前面的话 一直想将spring boot相关内容写成一个系列的 ...

  10. [转] Spring Boot实战之Filter实现使用JWT进行接口认证

    [From] http://blog.csdn.net/sun_t89/article/details/51923017 Spring Boot实战之Filter实现使用JWT进行接口认证 jwt(j ...

随机推荐

  1. Zebra GT800标签打印机打印时脱机并亮红灯的故障处理

    Zebra GT800标签打印机打印时脱机并亮红灯的故障处理 打印测试正常,所有设置都正常,驱动原厂的,打印时只打印一点头,把所有的东西都测试了,花了1天半时间,该摸到的点都测了一般,甚至打算把这款打 ...

  2. CMMI-QA工作流程(角色区分)

    qa 是如何工作的,如何保证产品质量的? 首先制定质量保证计划->根据过程清单和产品清单对组织级和项目级内容进行检查->不符合项记录在不符合项问题记录表中.反馈项目精力,跟踪问题知道问题解 ...

  3. JVM系列(四):GC策略

    一.概念 GC,Garbage Collection垃圾回收,主要针对JVM中的堆和方法区,而JVM栈.本地方法栈,程序计数器都是线程私有的,跟随线程生命周期. 二.对象存活判断 1. 引用计数:每个 ...

  4. Java常用数据结构

    1.数组 数组(Array) 是一种很常见的数据结构.它由相同类型的元素(element)组成,并且是使用一块连续的内存来存储. 我们直接可以利用元素的索引(index)可以计算出该元素对应的存储地址 ...

  5. 动态修改网页的 icon 和 title

    在public的index.html中使用 link 和 title 占位(内容随意,获取到数据之后此处的内容会被覆盖) 在App.vue中调用接口获取数据,找到 link 和 title 元素,将获 ...

  6. Docker 详解

    1.docker 基础 https://blog.csdn.net/huangjhai/article/details/118854733 2.docker进阶 https://blog.csdn.n ...

  7. go web编程学习记录

    学习 https://segmentfault.com/a/1190000013297625的记录 简单demo package main import "github.com/gin-go ...

  8. TypeScript Number

    TypeScript Number TypeScript 与 JavaScript 类似,支持 Number 对象. Number 对象是原始数值的包装对象. 语法 var num = new Num ...

  9. TCP三次握手和四次挥手的原因所在

    报文从运用层传送到运输层,运输层通过TCP三次握手和服务器建立连接,四次挥手释放连接. 为什么需要三次握手呢?为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误. 比如:client发出 ...

  10. js正则 -180 到180 小数点后无限位、el-input

    正则 -180 到180 小数点后无限位/^0$|^-?0\.\d*[1-9]$|^-?[1-9](\.\d*[1-9])?$|^-?[1-9]\d(\.\d*[1-9])?$|^-?1[0-7]\d ...