搞副业|全网最快后端

简介: 搞副业|全网最快后端

本文讲解SpringBoot和Vue项目搭建的最小化原型,非常方便后续同类知识点的学习,同时也是非常棒的脚手架,可快速搭建各种实验的基础框架,本文实践于2022年7月10号,进行练习前建议仔细核对相关软件版本,避免引起不必要的麻烦。

后端SpringBoot项目方面,全程采用纯手工代码的方式,而实际企业项目中可能采用mybatis-plus等插件,极大减少代码量和维护工作量,我们将于后续补充这块的讲解。测试方面引入postman做验证,科学严谨的质量检测是一切项目的代码质量保证,研发工作需要有个闭环,最后我们介绍如何将SpringBoot项目如何交付给测试/生产环境做部署。

因篇幅所限,Vue项目搭建、与SpringBoot项目联调联试的内容我们在另一篇幅中讲解。


一、SpringBoot项目搭建

项目准备工作

  • 实验测试时间为2022年7月10日
  • 开发机采用 Win10 64位操作系统
  • 开发IDE采用ItelliJ IDEA 2022.1.3 官网企业版
  • JDK采用1.8.0_121
  • 构建工具采用IDEA自带捆绑的3.8.1,并设置了阿里云镜像加速
  • SpringBoot采用2.7.1版本,未附加其他插件,保障原型最小化,避免不必要的干扰

Tip: 以上工具软件均可在网上搜索得到,安装文档也容易取得,这里不过多赘述

项目代码一览

  1. 配置文件
  • pom.xml 项目构建所需的脚本文件,常用于开发和maven构建时提供所需插件的信息及构建的实际动作。
  • WebMvcConfig.java 用于处理vue跨域访问的设置,非必须,同类工作也可在vue中实现
  1. SpringBoot入口文件
  • DemoApplication.java 项目入口文件,由IDE的Spring Initializr生成器自动生成,未做修改。
  1. MVC代码
  • bean/Book.java mvc架构中常见的实体bean,通常与物理表结构一对一,主要包括属性、getset、构造函数。
  • service/BookService.java mvc架构中的服务层接口,常用于Controller类的注入和调用。
  • service/impl/BookServiceImpl.java 服务层接口的实现代码,后端数据抽取、加工、填充的主要部分。
  • controller/BookController.java mvc架构中视图层的相应代码,与web的交互都在这里做处理

(一)、配置文件

pom.xml  IDE生成器自动生成,未做修改

<!-- pom核心依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

WebMvcConfig 跨域配置  非必须,也可在vue中实现

package com.iyyxx.demo;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        //跨域配置
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
                .allowCredentials(true)
                .maxAge(3600)
                .allowedHeaders("*");
    }
}

(二)、SpringBoot入口文件

DemoApplication IDE生成器自动生成,重点在于@SpringBootApplication注解

package com.iyyxx.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

(三)、MVC代码

Book.java 书籍实体类

package com.iyyxx.demo.bean;
import java.io.Serializable;
public class Book implements Serializable {
    private static final long serialVersionUID = 1L;
    private int id;
    private String bookName;
    private String author;
    private String publish;
    private Integer pages;
    private Float price;
    // 构造函数、Get/Set方法省略,可考虑用lombok注解自动生成
}

BookService.java  服务层接口,定义了集合查询接口,用于vue项目中的数据查询

package com.iyyxx.demo.service;
import com.iyyxx.demo.bean.Book;
import java.util.List;
public interface BookService {
    List<Book> findAll();
}

BookServiceImpl.java 服务接口的代码实现,为保障原型最小化,这里采用伪代码,后续可替换为mybatis等实现

package com.iyyxx.demo.service.impl;
import com.iyyxx.demo.bean.Book;
import com.iyyxx.demo.service.BookService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class BookServiceImpl implements BookService {
    public List<Book> findAll() {
        List<Book> list = new ArrayList<Book>();
        list.add(new Book(1, "书剑恩仇录1", "金庸", "电子工业出版社", 100, 31.6f));
        list.add(new Book(2, "书剑恩仇录2", "金庸", "电子工业出版社", 100, 32.6f));
        list.add(new Book(3, "书剑恩仇录3", "金庸", "电子工业出版社", 100, 33.6f));
        list.add(new Book(4, "书剑恩仇录4", "金庸", "电子工业出版社", 100, 34.6f));
        list.add(new Book(5, "书剑恩仇录5", "金庸", "电子工业出版社", 100, 35.6f));
        return list;
    }
}

BookController.java 控制层提供了两种不同的实现,方便前端调取文本和列表做展示

package com.iyyxx.demo.controller;
import com.iyyxx.demo.bean.Book;
import com.iyyxx.demo.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class BookController {
    @Autowired
    private BookService bookService;
    @GetMapping("/list")
    public List<Book> findAll(){
        return bookService.findAll();
    }
    @GetMapping("/test")
    public String test(){
        return "hello springboot";
    }
}

二、SpringBoot项目测试

本项目测试成功的原则标准:

  • 编译器自检无严重bug
  • web服务可正常启动
  • 查询两个数据接口均为正常返回

运行检查:执行alt+shift+x或鼠标点击IDE右上角绿色三角箭头,启动DemoApplication项目,一切正常!

服务检查:浏览器访问/test和/list接口也正常返回

补充:json数据的返回、检查不易观看,可在edge中安装插件,或使用postman等工具,提供效率,效果如下

三、SpringBoot项目部署

通常j2ee的项目交付测试或生产时一般是打包成war部署到tomcat、jboss等中间件,而springboot设计理念本着精简、微服务,可将代码通过pom设置的插件打包成jar,通过对main-class的设置和自我实现,可将jar用java命令直接运行,这样非常方便未来进行容器集成和部署!

当然,如果要打包成war也是一点问题都没有的,网上可以找到很多例子。

打包部署

# 点击ide中的mvn面板或执行以下脚本,生产jar文件
mvn package
# 运行
java -jar demo-xxx.jar

结语

SpringBoot 项目非常轻松的完成了,不要忘了技术原理的学习,未来很多技术会高度集成和简化,技术实现原理往往几十年都不会有大改动。所以掌握好原理就能以不变应万变,学习就会有加速!

相关文章
|
Shell
openstack 查询网络的port
在OpenStack中,可以使用以下命令来查询网络的端口信息: ```bash openstack port list ``` 该命令将显示所有端口的列表,包括端口的ID、网络ID、MAC地址、IP地址等信息。 如果您只想查询特定网络的端口,可以使用`openstack port list --network <network_id>`命令,其中`<network_id>`是您要查询的网络ID。 另外,如果您想查看端口的详细信息,可以使用`openstack port show <port_id>`命令,其中`<port_id>`是您要查询的端口ID。该命令将显示端口的详细信息,包括网
526 2
|
Kubernetes 数据可视化 Docker
Kubeadm方式搭建k8s集群全流程-20230207
Kubeadm方式搭建k8s集群全流程-20230207
270 0
|
安全 NoSQL 关系型数据库
使用cnpm搭建企业内部私有NPM仓库
cnpm是企业内部搭建npm镜像和私有npm仓库的开源方案。它同时解决了现有npm架构的一些问题。
1148 0
使用cnpm搭建企业内部私有NPM仓库
|
3月前
|
传感器 算法 安全
具有飞行约束的无人机MPC模型预测控制研究(Matlab代码实现)
具有飞行约束的无人机MPC模型预测控制研究(Matlab代码实现)
168 2
|
4月前
|
监控 数据可视化 机器人
直播间自动发言机器人,直播场控机器人免费版,快手抖音小红书哔哩哔哩工具
核心控制器采用异步IO架构,支持同时处理弹幕监控、自动回复和数据统计 实现多平台适配层,通过配置驱动支持抖音/快手/小红书/哔哩哔哩的差异化处理
|
Prometheus Kubernetes 监控
Prometheus 与 Kubernetes 的集成
【8月更文第29天】随着容器化应用的普及,Kubernetes 成为了管理这些应用的首选平台。为了有效地监控 Kubernetes 集群及其上的应用,Prometheus 提供了一个强大的监控解决方案。本文将详细介绍如何在 Kubernetes 集群中部署和配置 Prometheus,以便对容器化应用进行有效的监控。
919 3
|
弹性计算 Linux 数据安全/隐私保护
1分钟搭建幻兽帕鲁游戏联机服务器,加入多人游戏(专用服务器)
1分钟搭建幻兽帕鲁游戏联机服务器,加入多人游戏(专用服务器)玩转幻兽帕鲁服务器,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云百科网分享2024年新版基于阿里云搭建幻兽帕鲁服务器教程:
463 7
|
8月前
|
机器学习/深度学习 人工智能 运维
别再靠拍脑袋做运维了!深度学习来给你“出主意”
别再靠拍脑袋做运维了!深度学习来给你“出主意”
249 0
|
4月前
|
监控 数据挖掘 API
利用拼多多 API 接口,实现拼多多店铺物流时效优化
在电商竞争激烈的今天,物流时效直接影响拼多多店铺的客户满意度与复购率。本文介绍如何通过拼多多开放平台的 API 接口,自动化获取订单与物流数据,分析时效瓶颈并制定优化策略。内容涵盖 API 基本功能、物流数据分析、智能优化方法及 Python 实现示例,帮助商家提升配送效率,降低退货率,增强用户体验与店铺竞争力。
488 0
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
人机融合智能 | 数据与知识双驱动式人工智能
本章系统介绍了数据驱动、知识驱动及双驱动人工智能的理论与应用。数据驱动方法依赖大数据和深度学习,在图像识别、自然语言处理等领域取得突破,但面临标注成本高、可解释性差等问题。知识驱动方法通过知识表示与推理提升系统理解能力,却在泛化性和适应性上受限。为弥补单一范式的不足,数据与知识双驱动融合两者优势,致力于构建更智能、可解释且安全可靠的AI系统,兼顾伦理与隐私保护。文章还回顾了AI发展历程,从早期神经网络到当前大规模语言模型(如GPT、BERT)的技术演进,深入解析了各类机器学习与深度学习模型的核心原理与应用场景,展望未来AI发展的潜力与挑战。
360 0