龙中华著《Spring Boot实战派》读书笔记之基础篇
第四章 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)
龙中华著《Spring Boot实战派》读书笔记之基础篇的更多相关文章
- 《spring boot 实战》读书笔记
前言:虽然已经用spring boot开发过一套系统,但是之前都是拿来主义,没有系统的,全面的了解过这套框架.现在通过学习<spring boot实战>这本书,希望温故知新.顺便实现自己的 ...
- [Spring Boot Reference Guide] 读书笔记一 Getting Started
8. Introducing Spring Boot Goals of spring boot: Provide a radically faster and widely accessible ge ...
- SpringBoot实战派读书笔记---响应式编程
1.什么是WebFlux? WebFlux不需要Servlet API,在完全异步且无阻塞,并通过Reactor项目实现了Reactor Streams规范. WebFlux可以在资源有限的情况下提高 ...
- 《Spring Boot 实战纪实》之过滤器
导航 什么是过滤器 Spring的过滤器 Filter定义 过滤的对象 典型应用 过滤器的使用 Filter生命周期 过滤器链 自定义敏感词过滤器 新增自定义过滤器 添加 @WebFilter注解 添 ...
- spring boot实战(第十三篇)自动配置原理分析
前言 spring Boot中引入了自动配置,让开发者利用起来更加的简便.快捷,本篇讲利用RabbitMQ的自动配置为例讲分析下Spring Boot中的自动配置原理. 在上一篇末尾讲述了Spring ...
- spring boot实战(第十二篇)整合RabbitMQ
前言 最近几篇文章将围绕消息中间件RabbitMQ展开,对于RabbitMQ基本概念这里不阐述,主要讲解RabbitMQ的基本用法.Java客户端API介绍.spring Boot与RabbitMQ整 ...
- Spring Boot实战系列-----------邮件发送
快速导航 添加Maven依赖 配置文件增加邮箱相关配置 Service.Test项目代码构建 五种邮件发送类型讲解 文本邮件 html邮件 附件邮件 html内嵌图片邮件 模板邮件 问题汇总 添加ma ...
- Spring Boot 实战与原理分析视频课程
Spring Boot 实战与原理分析视频课程 链接:https://pan.baidu.com/share/init?surl=PeykcoeqZtd1d9lN9V_F-A 提取码: 关注公众号[G ...
- spring boot实战(第一篇)第一个案例
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] spring boot实战(第一篇)第一个案例 前言 写在前面的话 一直想将spring boot相关内容写成一个系列的 ...
- [转] Spring Boot实战之Filter实现使用JWT进行接口认证
[From] http://blog.csdn.net/sun_t89/article/details/51923017 Spring Boot实战之Filter实现使用JWT进行接口认证 jwt(j ...
随机推荐
- Unity 关于可寻址资源系统Addressables的使用和理解(一) 准备工作
一.打开Unity的PackageManager,安装Addressables包 二.打开分组面板,对未来要分类的资源包进行分组,并对组进行设置. 1.菜单栏选择Window/AssetManagen ...
- Jenkins自动化部署(linux环境)---代码提交触发Jenkins构建
1.在工程中点击构建触发器中选择Generic Webhook Trigger,填写token 2.gitee配置Webhook 选择gitee项目中的Settings->Webhooks> ...
- Fiddle 简单用法
下载安装后,还要下载证书放到浏览器 https://zhuanlan.zhihu.com/p/439203346
- Beginning IOS 7 Development Exploring the IOS SDK - Handling Basic Interface Fun
Beginning IOS 7 Development Exploring the IOS SDK 目前使用的是Objective-C,用这本书,简单记录一下 第一章,图书简介 第二章,简要介绍使用x ...
- 深入Alertmanager 概念与配置介绍
原文: https://www.cnblogs.com/gered/p/13496950.html 警报一直是整个监控系统中的重要组成部分,Prometheus监控系统中,采集与警报是分离的.警报规则 ...
- 像这个TSC打印机售后维修服务平台网站,是如何做到复制不到网站里面的内容的?
这个条码之家是TSC打印机售后维修服务平台网站 网址是这个,http://www.tiaomazhijia.com 打开网站,复制不了里面的内容,右健也另存不了图片等,是如何做到的. tsc显示错误亮 ...
- SQLSERVER 存储过程里 执行sql字符串 并返回结果
-- Author: <Author,,Name>-- Create date: <Create Date,,>-- Description: 停用/启用12个月销售目标--e ...
- 33. Java对异常处理的两种方式
声明异常 throw: 关键字,用于抛出一个指定的异常对象 必须写在方法内部.必须是Exception或Exception的子类对象 throws: 用于方法声明上,表示当前方法不处理该异常,提醒调用 ...
- Background Suppression Network for Weakly-supervised Temporal Action Localization概述
0. 前言 相关资料: arxiv github 论文解读1,论文解读2 论文基本信息: 领域:弱监督时序行为定位 发表时间:AAAI 2020(2019.11.22) 1.针对的问题 弱监督视频动作 ...
- JS根据分数,计算名次(分数相同名次相同)
一开始的接口返回数据(数据已经拍好顺序,但是分数相同名次不同),如果数据未排序,先用sort排序,由大到小 分数相同名次相同,则需要以下操作即可 let prescore = 0;//初始分数 let ...