SpringBoot:入门简单使用
目录
一、SpringBoot的简介
二、简单使用
创建springboot项目
使用Java代码
使用springboot写增删改查
优化:使用响应封装类
一、SpringBoot的简介
Spring Boot它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。
也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具
注意:
注1:敏捷式开发
注2:spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式, 就像maven整合了所有的jar包,spring boot整合了所有的框架
注3:基于Spring框架的一站式解决方
二、简单使用
使用idea新建一个springboot的项目
创建springboot项目
到这里就新建成功了
需要注意的是:在创建该项目时 勾选开发工具不能全勾 或者没有计划的配置却勾选 会报错
使用Java代码
测试一下 是否能用
创建成功后的项目便有一个Spring01Application 类
package com.cdl.spring01;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication()
public class Spring01Application {public static void main(String[] args) {SpringApplication.run(Spring01Application.class, args);}}
自己写一个controller
package com.cdl.spring01.demo;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author cdl* @site www.cdl.com* @create 2022-10-28 19:23*/
//RestController = @responseBody + @controller
@RestController
public class IndexController {@RequestMapping("/")public String index(){System.out.println("com in");//index的字符串return "index";}}
springboot有内置的tomcat
能够正常使用
修改配置
再运行
下载所需要的插件
右键选中修改配置的那个文件 转换一下格式
转换格式之后
使用springboot写增删改查
package com.cdl.spring01.demo;import jdk.nashorn.internal.objects.annotations.Constructor;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;/*** @author cdl* @site www.cdl.com* @create 2022-10-28 19:56*/
@RestController
@RequestMapping("/book")
public class BookController {@RequestMapping("/list")
// @GetMapping("list")public Map list(){Map map = new HashMap();map.put("data", Arrays.asList(new Book(1,"足球"),new Book(2,"篮球"),new Book(3,"排球"),new Book(4,"羽毛球"),new Book(5,"台球")));map.put("total",168);map.put("msg","查询成功");map.put("code",200);return map;}@RequestMapping("/add")
// @PutMapping("/add")public Map add(){Map map = new HashMap();map.put("msg","新增成功");map.put("code",200);return map;}@RequestMapping("/load")public Map load(){Map map = new HashMap();map.put("msg","加载成功");map.put("data",new Book(3,"排球"));map.put("code",200);return map;}@RequestMapping("/edit")
// @PostMapping("/edit")public Map edit(){Map map = new HashMap();map.put("msg","修改成功");map.put("code",200);return map;}@RequestMapping("/delete")
// @DeleteMapping("/delete")public Map delete(){Map map = new HashMap();map.put("msg","删除成功");map.put("code",200);return map;}
}//构造器
//@Constructor
@AllArgsConstructor
@Data
class Book{private int id;private String name;}
增加
修改
删除
查询
将方法注释换成
package com.cdl.spring01.demo;import jdk.nashorn.internal.objects.annotations.Constructor;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;/*** @author cdl* @site www.cdl.com* @create 2022-10-28 19:56*/
@RestController
@RequestMapping("/book")
public class BookController {@RequestMapping("/list")//@GetMapping("list")public Map list(){Map map = new HashMap();map.put("data", Arrays.asList(new Book(1,"足球"),new Book(2,"篮球"),new Book(3,"排球"),new Book(4,"羽毛球"),new Book(5,"台球")));map.put("total",168);map.put("msg","查询成功");map.put("code",200);return map;}@RequestMapping("/add")
// @PutMapping("/add")public Map add(){Map map = new HashMap();map.put("msg","新增成功");map.put("code",200);return map;}@RequestMapping("/load")public Map load(){Map map = new HashMap();map.put("msg","加载成功");map.put("data",new Book(3,"排球"));map.put("code",200);return map;}@RequestMapping("/edit")
// @PostMapping("/edit")public Map edit(){Map map = new HashMap();map.put("msg","修改成功");map.put("code",200);return map;}// @RequestMapping("/delete")@DeleteMapping("/delete")public Map delete(){Map map = new HashMap();map.put("msg","删除成功");map.put("code",200);return map;}
}//构造器
//@Constructor
@AllArgsConstructor
@Data
class Book{private int id;private String name;}
优化:使用响应封装类
新建一个result的包
放入错误编码类
package com.cdl.spring01.Result;public class CodeMsg {private int code;private String msg;//通用的错误码public static CodeMsg SUCCESS = new CodeMsg(200, "success");public static CodeMsg SERVER_ERROR = new CodeMsg(500, "服务端异常");public static CodeMsg BIND_ERROR = new CodeMsg(500101, "参数校验异常:%s");public static CodeMsg REQUEST_ILLEGAL = new CodeMsg(500102, "请求非法");public static CodeMsg ACCESS_LIMIT_REACHED = new CodeMsg(500104, "访问太频繁!");//登录模块5002XXpublic static CodeMsg SESSION_ERROR = new CodeMsg(500210, "Session不存在或者已经失效");public static CodeMsg PASSWORD_EMPTY = new CodeMsg(500211, "登录密码不能为空");public static CodeMsg MOBILE_EMPTY = new CodeMsg(500212, "手机号不能为空");public static CodeMsg MOBILE_ERROR = new CodeMsg(500213, "手机号格式错误");public static CodeMsg MOBILE_NOT_EXIST = new CodeMsg(500214, "手机号不存在");public static CodeMsg PASSWORD_ERROR = new CodeMsg(500215, "密码错误");//商品模块5003XX//订单模块5004XXpublic static CodeMsg ORDER_NOT_EXIST = new CodeMsg(500400, "订单不存在");//秒杀模块5005XXpublic static CodeMsg MIAO_SHA_OVER = new CodeMsg(500500, "商品已经秒杀完毕");public static CodeMsg REPEATE_MIAOSHA = new CodeMsg(500501, "不能重复秒杀");public static CodeMsg MIAOSHA_FAIL = new CodeMsg(500502, "秒杀失败");private CodeMsg() {}private CodeMsg(int code, String msg) {this.code = code;this.msg = msg;}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public CodeMsg fillArgs(Object... args) {int code = this.code;String message = String.format(this.msg, args);return new CodeMsg(code, message);}@Overridepublic String toString() {return "CodeMsg [code=" + code + ", msg=" + msg + "]";}
}
统一响应类
package com.cdl.spring01.Result;public class Result<T> {private int code;private String msg;//因为返回的数据不知道是什么类型,所以定义一个泛型private T data;private long total;public long getTotal() {return total;}public void setTotal(long total) {this.total = total;}/*** 成功的时候调用*/public static <T> Result<T> ok(T data) {return new Result<T>(data);}public static <T> Result<T> ok(int code,String msg) {return new Result<>(code,msg);}public static <T> Result<T> ok(int code,String msg,T data) {Result<T> success = ok(data);success.setCode(code);success.setMsg(msg);return success;}public static <T> Result<T> ok(int code,String msg,T data,long total) {Result<T> success = ok(code,msg,data);success.setTotal(total);return success;}/*** 失败的时候调用*/public static <T> Result<T> error(CodeMsg codeMsg) {return new Result<T>(codeMsg);}private Result(T data) {this.data = data;}private Result(int code, String msg) {this.code = code;this.msg = msg;}private Result(CodeMsg codeMsg) {if (codeMsg != null) {this.code = codeMsg.getCode();this.msg = codeMsg.getMsg();}}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public T getData() {return data;}public void setData(T data) {this.data = data;}
}
controller
package com.cdl.spring01.demo;import com.cdl.spring01.Result.CodeMsg;
import com.cdl.spring01.Result.Result;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;/*** @author cdl* @site www.cdl.com* @create 2022-10-28 19:56*/
@RestController
@RequestMapping("/book2")
public class BookController02 {
// @RequestMapping("/list")@GetMapping("list")public Result list(){return Result.ok(200,"查询成功",Arrays.asList(new Book(1,"足球"),new Book(2,"篮球"),new Book(3,"排球"),new Book(4,"羽毛球"),new Book(5,"台球")),168);}// @RequestMapping("/add")@PutMapping("/add")public Result add(){return Result.ok(200,"新增成功");}@RequestMapping("/load")public Result load(){return Result.ok(200,"加载成功",new Book(3,"排球"));}// @RequestMapping("/edit")@PostMapping("/edit")public Result edit(){return Result.ok(200,"修改成功");}// @RequestMapping("/delete")@DeleteMapping("/delete")public Result delete(){return Result.ok(200,"删除成功");}@RequestMapping("/queryByUser")public Result queryByUser(){return Result.error(CodeMsg.BIND_ERROR.fillArgs("密码等级太低"));}
}
使用测试工具postman测试结果
查询
新增
修改
删除
SpringBoot:入门简单使用相关推荐
- 最简单最详细的SpringBoot入门项目——HelloWorld
最详细的SpringBoot入门项目--HelloWorld 关于SpringBoot的介绍以及优点这里就不说了,想了解的可以直接点击这里 Spring Boot百度百科 接下来我们直奔主题,开始用S ...
- SpringBoot入门建站全系列(二十七)WebSocket做简单的聊天室
SpringBoot入门建站全系列(二十七)WebSocket做简单的聊天室 一.概述 WebSocket 是一种网络通信协议.RFC6455 定义了它的通信标准. WebSocket 是 HTML5 ...
- SpringBoot入门(二)——起步依赖
本文来自网易云社区 在前一篇我们通过简单几步操作就生成了一个可以直接运行的Web程序,这是因为SpringBoot代替我们做了许多工作,概括来讲可以分为起步依赖和自动配置.这一篇先来看看起步依赖. 项 ...
- springboot 入门教程(4)--web开发(spring mvc和Thymeleaf模板,带源码)
2019独角兽企业重金招聘Python工程师标准>>> 首先回顾下前几篇的内容:springboot 入门教程(1),springboot 入门教程-Thymeleaf(2), sp ...
- springboot 历史版本文档_乘风破浪,SpringBoot入门
SpringBoot入门篇 前言 在普通的java项目中,大量的xml文件配置起来相当繁琐,导致了开发效率非常低下,整合第三方框架的配置可能会存在冲突问题导致部署效率低,打包方式是将项目打成一个war ...
- SpringBoot入门到精通_第1篇 _核心概念
SpringBoot 必知必会 核心精粹 文章目录 一.SpringBoot必知必会 1. 是什么?能做什么? 2. 有哪些特性? 一.SpringBoot必知必会 1. 是什么?能做什么? 是什么? ...
- 【Java从0到架构师】SpringBoot - 入门_配置文件_YAML
SpringBoot - 入门_配置文件_YAML SpringBoot - 入门 @SpringBootApplication 可运行 jar - spring-boot-maven-plugin ...
- SpringBoot 入门
SpringBoot 入门 SpringBoot的特点 解决了复杂的配置,统一依赖管理: // 自动配置.起步依赖.命令行界面.Actuator- 为开发者提供一个非常快速的.广泛接受的入门体验- 开 ...
- SpringBoot入门操作笔记[+mybatismysql]
文章目录 SpringBoot入门操作笔记[+mybatis&mysql] 1. 创建工程 1.1. 新建SpringBoot项目 1.2. 配置Maven 1.3. 编码配置 2. 项目结构 ...
最新文章
- uniapp添加顶部导航栏颜色渐变
- 美创企推出仅90斤的物流无人车,成本低至5000美元
- Linux下常用软件
- iframe学习总结
- 成功解决Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2(二)
- 获得Google搜索字符串中的关键字
- Php7实现文件下载,PHP7 SFTP下载文件并重命名该下载文件
- ZJOI2019赛季回顾
- 学士学位非计算机专业考试真题,大学学位计算机考试习题
- L2-016 愿天下有情人都是失散多年的兄妹 CCCC
- gRPC-go 入门(1):Hello World
- 计算机专业个人能力评估,计算机应用专业毕业生个人自我评价
- mybaitplus 根据id批量进行修改_phpcms小程序插件api接口升级到4.3(新增批量获取、搜索等接口)...
- 苹果电脑如何使用Tuxera NTFS for mac抹掉NTFS格式
- Jquery_artDialog对话框弹出
- DSP指纹识别系统硬件设计
- Erlang中的fun函数使用详解
- mac 上 csv导入Excel 出现 “此文本文件包含的数据无法放置在一个工作表” 错误
- 求职秘籍-如何准备面试?
- linux mint 19.1 安装steam, 打开无反映的解决办法
热门文章
- char, unsigned char, int,unsigned int之间的相互转换
- JavaSE基础笔记(全)
- 1.设计一个长方形的类,成员变量有长与宽,成员函数有求周长与面积,然后进行测试。要求有构造函数、析造函数和复制构造函数。
- 新版本android_id,android手机唯一id方案总结
- java maptodouble_Lambda表达式mapToDouble.sum精度问题
- RocketMQ(七)RocketMQ消息生产及消息储存机制
- java实现上位机与下位机串口通信
- 计算机领域哪个证值钱,最值钱且相对好考的证书有哪些?
- 一道数学题,让芯片巨头亏了5亿美金!
- 关于qqv8.8.17版如何关闭QQ看点