• SpringBoot入门


    目录

    1.简介

    2.入门

    2.1.创建项目

    3.统一响应类及错误编码类 

    3.1.Eolink的使用  

    3.2.安装一个测试软件

     3.3.响应封装类


    1.简介

    SpringBoot是什么?

    Spring Boot它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。
    也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具

    同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),
    Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的Spring Boot应用都
    只需要非常少量的配置代码,开发者能够更加专注于业务逻辑

    注1:敏捷式开发

    注2:spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式, 就像maven整合了所有的jar包,spring boot整合了所有的框架

    注3:基于Spring框架的一站式解决方案

    2.入门

    2.1.创建项目

    注意:创建SpringBoot项目时一定要确保有网络

    可以换源

     http://start.aliyun.com 

    开发工具选择Lombok主键

     勾选Spring Web即可

    测试SpringBoot是否能正常使用

    创建一个demo

    IndexController:
    1. package com.xbb.springboot01.demo;
    2. import org.springframework.web.bind.annotation.RequestMapping;
    3. import org.springframework.web.bind.annotation.RestController;
    4. /**
    5. * @author冰冰
    6. * @create  2022-11-04 14:25
    7. */
    8. @RestController
    9. public class IndexController {
    10. @RequestMapping("/")
    11. public String index(){
    12. System.out.println("come in");
    13. return "index";
    14. }
    15. }

    注意:springboot项目不要配置tomcat它有内置的服务器!!

     运行结果:

    1.特点:敏捷式开发,开箱即用,基于Spring的一站式解决方案。

    2.SpringBoot的目录结构

    src

            main

                    java

                    reseurce

                    static(放静态资源)

                    template(模板引擎,相对于maven项目中的webapp;Spring默认是不支持jsp的)

                    application.propertis(Sptring中一个唯二的配置文件)

                    test

    3.下载properties与yml的文件装换插件

    Convert YAML and Properties File

     注意:下载完成插件要重启IDEA

    3.统一响应类及错误编码类 

    3.1.Eolink的使用  

    创建一个测试类模拟数据

    1. package com.jwj.springboot01.dmeo;
    2. import lombok.AllArgsConstructor;
    3. import lombok.Data;
    4. import org.springframework.web.bind.annotation.*;
    5. import java.util.Arrays;
    6. import java.util.HashMap;
    7. import java.util.List;
    8. import java.util.Map;
    9. /**
    10. * @author冰冰
    11. * @create  2022-11-04 15:43
    12. */
    13. @RestController
    14. @RequestMapping("/book")
    15. public class BookController {
    16. @RequestMapping("/list")
    17. public Map list(){
    18. // 查询数据库
    19. List books = Arrays.asList(new Book(1, "西游记"),
    20. new Book(2, "红楼梦"),
    21. new Book(3, "水浒传"),
    22. new Book(4, "三国演义"));
    23. Map map = new HashMap();
    24. map.put("data",books);
    25. map.put("total",122);
    26. map.put("msg","查询成功");
    27. map.put("code",200);
    28. return map;
    29. }
    30. @RequestMapping("/add")
    31. public Map add(){
    32. Map map = new HashMap();
    33. map.put("msg","新增成功");
    34. map.put("code",200);
    35. return map;
    36. }
    37. @RequestMapping("/update")
    38. public Map update(){
    39. Map map = new HashMap();
    40. map.put("msg","修改成功");
    41. map.put("code",200);
    42. return map;
    43. }
    44. @RequestMapping("/del")
    45. public Map del(){
    46. Map map = new HashMap();
    47. map.put("msg","删除成功");
    48. map.put("code",200);
    49. return map;
    50. }
    51. @RequestMapping("/load")
    52. public Map load(){
    53. Map map = new HashMap();
    54. map.put("data",new Book(1,"西游记"));
    55. map.put("msg","删除成功");
    56. map.put("code",200);
    57. return map;
    58. }
    59. }
    60. @AllArgsConstructor
    61. //lombok组件代表的是set、get、ToString方法都不用写了,这是它的作用
    62. @Data
    63. class Book{
    64. private int id;
    65. private String name;
    66. }

    运行结果:

    修改注解

     会报错的!!

    3.2.安装一个测试软件

     

     

    eolink的使用:更细粒度的调试后台数据接口

     3.3.响应封装类

    Result:

    1. package com.xbb.springboot01.result;
    2. /**
    3. * @author冰冰
    4. * @create  2022-11-04 23:00
    5. */
    6. public class Result {
    7. private int code;
    8. private String msg;
    9. //因为返回的数据不知道是什么类型,所以定义一个泛型
    10. private T data;
    11. private long total;
    12. public long getTotal() {
    13. return total;
    14. }
    15. public void setTotal(long total) {
    16. this.total = total;
    17. }
    18. /**
    19. * 成功的时候调用
    20. */
    21. public static Result ok(T data) {
    22. return new Result(data);
    23. }
    24. public static Result ok(int code,String msg) {
    25. return new Result<>(code,msg);
    26. }
    27. public static Result ok(int code,String msg,T data) {
    28. Result success = ok(data);
    29. success.setCode(code);
    30. success.setMsg(msg);
    31. return success;
    32. }
    33. public static Result ok(int code,String msg,T data,long total) {
    34. Result success = ok(code,msg,data);
    35. success.setTotal(total);
    36. return success;
    37. }
    38. /**
    39. * 失败的时候调用
    40. */
    41. public static Result error(CodeMsg codeMsg) {
    42. return new Result(codeMsg);
    43. }
    44. private Result(T data) {
    45. this.data = data;
    46. }
    47. private Result(int code, String msg) {
    48. this.code = code;
    49. this.msg = msg;
    50. }
    51. private Result(CodeMsg codeMsg) {
    52. if (codeMsg != null) {
    53. this.code = codeMsg.getCode();
    54. this.msg = codeMsg.getMsg();
    55. }
    56. }
    57. public int getCode() {
    58. return code;
    59. }
    60. public void setCode(int code) {
    61. this.code = code;
    62. }
    63. public String getMsg() {
    64. return msg;
    65. }
    66. public void setMsg(String msg) {
    67. this.msg = msg;
    68. }
    69. public T getData() {
    70. return data;
    71. }
    72. public void setData(T data) {
    73. this.data = data;
    74. }
    75. }

    CodeMsg.java

    1. package com.xbb.springboot01.result;
    2. /**
    3. * @author冰冰
    4. * @create  2022-11-04 22:16
    5. */
    6. public class CodeMsg {
    7. private int code;
    8. private String msg;
    9. //通用的错误码
    10. public static CodeMsg SUCCESS = new CodeMsg(200, "success");
    11. public static CodeMsg SERVER_ERROR = new CodeMsg(500, "服务端异常");
    12. public static CodeMsg BIND_ERROR = new CodeMsg(500101, "参数校验异常:%s");
    13. public static CodeMsg REQUEST_ILLEGAL = new CodeMsg(500102, "请求非法");
    14. public static CodeMsg ACCESS_LIMIT_REACHED = new CodeMsg(500104, "访问太频繁!");
    15. //登录模块5002XX
    16. public static CodeMsg SESSION_ERROR = new CodeMsg(500210, "Session不存在或者已经失效");
    17. public static CodeMsg PASSWORD_EMPTY = new CodeMsg(500211, "登录密码不能为空");
    18. public static CodeMsg MOBILE_EMPTY = new CodeMsg(500212, "手机号不能为空");
    19. public static CodeMsg MOBILE_ERROR = new CodeMsg(500213, "手机号格式错误");
    20. public static CodeMsg MOBILE_NOT_EXIST = new CodeMsg(500214, "手机号不存在");
    21. public static CodeMsg PASSWORD_ERROR = new CodeMsg(500215, "密码错误");
    22. //商品模块5003XX
    23. //订单模块5004XX
    24. public static CodeMsg ORDER_NOT_EXIST = new CodeMsg(500400, "订单不存在");
    25. //秒杀模块5005XX
    26. public static CodeMsg MIAO_SHA_OVER = new CodeMsg(500500, "商品已经秒杀完毕");
    27. public static CodeMsg REPEATE_MIAOSHA = new CodeMsg(500501, "不能重复秒杀");
    28. public static CodeMsg MIAOSHA_FAIL = new CodeMsg(500502, "秒杀失败");
    29. private CodeMsg() {
    30. }
    31. private CodeMsg(int code, String msg) {
    32. this.code = code;
    33. this.msg = msg;
    34. }
    35. public int getCode() {
    36. return code;
    37. }
    38. public void setCode(int code) {
    39. this.code = code;
    40. }
    41. public String getMsg() {
    42. return msg;
    43. }
    44. public void setMsg(String msg) {
    45. this.msg = msg;
    46. }
    47. public CodeMsg fillArgs(Object... args) {
    48. int code = this.code;
    49. String message = String.format(this.msg, args);
    50. return new CodeMsg(code, message);
    51. }
    52. @Override
    53. public String toString() {
    54. return "CodeMsg [code=" + code + ", msg=" + msg + "]";
    55. }
    56. }

    BookController2

    1. package com.xbb.springboot01.demo;
    2. import com.xbb.springboot01.result.CodeMsg;
    3. import com.xbb.springboot01.result.Result;
    4. import lombok.AllArgsConstructor;
    5. import lombok.Data;
    6. import org.springframework.web.bind.annotation.*;
    7. import java.util.Arrays;
    8. import java.util.HashMap;
    9. import java.util.List;
    10. import java.util.Map;
    11. /**
    12. * @author冰冰
    13. * @create  2022-11-04 23:50
    14. */
    15. @RestController
    16. @RequestMapping("/book2")
    17. public class BookController2 {
    18. @GetMapping("/list")
    19. public Result list(){
    20. // 查询数据库
    21. List books = Arrays.asList(new Book(1, "西游记"),
    22. new Book(2, "三国演义"),
    23. new Book(3, "水浒传"),
    24. new Book(4, "红楼梦"));
    25. return Result.ok(200,"查询成功",books,222);
    26. }
    27. @PutMapping("/add")
    28. public Result add(Book book){
    29. System.out.println(book);
    30. int id = book.getId();
    31. if(id == 0){
    32. Map map = new HashMap();
    33. map.put("msg","name未传递");
    34. // return Result.error(CodeMsg.BIND_ERROR.fillArgs("id未传递"));
    35. }
    36. return Result.ok(200,"新增成功");
    37. }
    38. @PostMapping("/update")
    39. public Result update(){
    40. return Result.ok(200,"修改成功");
    41. }
    42. @DeleteMapping("/delete")
    43. public Result delete(int bid){
    44. System.out.println(bid);
    45. return Result.ok(200,"删除成功");
    46. }
    47. @RequestMapping("/load")
    48. public Result load(){
    49. return Result.ok(200,"加载成功",new Book(5,"aaa"));
    50. }
    51. }

  • 相关阅读:
    【sfu】追踪ms如何提供flv服务
    想定制Android系统实现改机?看完我也会了
    WEB安全基础 - - - Metasploit基础
    Spring 常犯的十大错误,打死都不要犯
    Elasticsearch学习(一):基础概念
    “三门问题”解决方案:换不换?更换策略与贝叶斯策略?附 Java 验证代码
    useState 原理详解
    Python编程 集合
    static关键字的一些注意点
    【Leetcode】140.单词拆分II(Hard)
  • 原文地址:https://blog.csdn.net/m0_68211831/article/details/127672838