本文讲解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: 以上工具软件均可在网上搜索得到,安装文档也容易取得,这里不过多赘述
项目代码一览:
- 配置文件
- pom.xml 项目
构建所需的脚本文件,常用于开发和maven构建时提供所需插件的信息及构建的实际动作。 - WebMvcConfig.java 用于处理vue跨域访问的设置,非必须,同类工作也可在vue中实现
- SpringBoot入口文件
- DemoApplication.java 项目
入口文件,由IDE的Spring Initializr生成器自动生成,未做修改。
- 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 项目非常轻松的完成了,不要忘了技术原理的学习,未来很多技术会高度集成和简化,技术实现原理往往几十年都不会有大改动。所以掌握好原理就能以不变应万变,学习就会有加速!





