先闲聊几句
好记性不如烂笔头,记录下来,最好组织自己的语言记录下来开发的详细过程,这样的收获才是最大的。
听传言说:开发界的大牛都是写文章的高手,相信此言不虚!
有问题,请留言,见必回。
会写哪些内容
SpringBoot是最火的web开发框架,Vue是最火的前端框架,可是无论是哪一个视频平台或者图文博客平台,都没有使用springboot + vue写出完整项目的开发教程。要么只讲spring boot,要么只讲vue,好不容易有个前后端都有的教程,后端可能是用node.js或php实现,而且只提供接口。
想不花钱报他们的开发班就学习到前后端的所有知识,好像是不可能的。
这次就来解决这个问题,使用纯SpringBoot和Vue写一个完整的商城商品,从小白的角度,尽可能详细的解释每一个细节,因为我也是个小白。
这里要写的是一个前端和后端都完整的项目,SpringBoot用来开发后台接口,Vue用来写前端页面,Vue前端的内容,包括javascript、css都要写清楚、写明白,后端的访问数据库,拦截器、生成token、mybatis、分页、数据源、swagger、radis等内容。
最重要的是:代码是完整的、可以直接拿来调试。
从具体的功能来分的话,包括以下方面:
由于题目字数限制,此处的“创建项目”实际指的是创建SpringBoot项目。
环境概述
后端开发环境:jdk1.8 + idea2202.1 + mysql 5.7 + Maven
前端开发环境:vue2.x + vscode最新版 + node.js最新版
前后端的环境搭建就不在这里详细说了,不会的先自行查资料解决。
如果想要我单写文章讲解,请留言。
学习步骤
- 先学习spring boot,具备对外提供接口的能力
- 学习Vue
- 交叉着写项目代码
了解SpringBoot
回顾spring
什么是spring?
spring 是一个轻量级的java开源框架,作者是Rod Johnson。
框架的最大的价值是拿来就可以用,节省了开发的难度和时间。
spring 是如何简化java开发的
- 基于POJO的轻量级和最小侵入性性编程,一切皆为Bean。
- 通过依赖注入(不再使用new 关键字来创建对象)和面向接口,实现松耦合。
- 基于切面和声明式编程
- 通过切面 和模板减少样板代码
什么是Spring Boot
spring boot是为了简化spring mvc的开发难度而产生的,确切的说,是减少了spring mvc中的配置,因为springboot的思想是约定大于配置。
spring boot 是一个java web 框架。
使用spring boot,能迅速的开发web应用,几行代码可以开发出一个接口。
spring boot有大量优秀的第三方库,几乎零配置的开箱即用。
什么是微服务?
单体应用架构
微服务也是一种架构,在了解微服务架构之前,先了解一下单体应用架构。
单体应用是指在一个应用中包括了所有应用服务,前端页面、数据库访问、后端接口等,最后打成war包,放到服务tomcat之类的软件中运行。
单体应用的这种结构,有利于开发和部署,特别是对于相对较小的应用。
缺点是哪怕是修改很小的地方,也要停掉整个服务,重新打包、部署。对大型应用来说,都放在一个应用中,开发、维护、分工、合作,也是件麻烦事。
微服务
微服务就是为了解决这种问题而产生的新架构。
把每个功能单元独立出来,修改时只影响单个模块,不会影响其它模块,可以独立升级代码,符合高内聚,低耦合的原则。
创建后端项目
在这里,只讲两种通过IDEA创建SpringBoot的方式,通过SpringBoot官网创建项目的方式就不讲了,我们这里的第一种创建方式其实就是调用官网的接口来创建的,其实是一回事。
方式一:通过spring构建器
1、启动IDEA,选择Create New Project,如下图
2、选择spring initializer,这是springboot官网的构建器,在这里创建spring boot项目与在官网创建是完全一致的。
3、填写项目信息
Group,是“组”意思,定义了项目属于哪个项目组,是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。公司一般都不只一个项目在开发,如果你的公司域名是com.jd,你正要做的项目为myapp,那么这里groupId就应该是com.jd.myapp,保证了唯一性,这样就可以与其它项目区别开了。
Artifact是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
version:当前版本,实际项目中需要按需修改。
name:项目名称
package:项目包名,可修改,但一般上group保持一致。
description:项目描述,可自行修改。
4、选spring-web启动器
这里选择的启动器会添加到pom.xml中,再下一步就完成创建了。
此时,可以直接运行主程序,但还不具备提供接口的能力。
方式二:通过Maven
1、创建普通Maven项目
2、这里不需要选择骨架(archetype),直接下一步
3、点击Next,创建完成后,在pom.xml文件中,添加依赖。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
4、添加依赖后,要手动更新meven
5、创建主启动类
@SpringBootApplication
//主启动类
public class MainApp {
public static void main(String[] args) {
SpringApplication.run(MainApp.class);
}
}
注意:一定要加上SpringBootApplication注解
两种方式最后的效果是一样的,通过maven需要自己创建主启动类和手动添加web启动器。
至此,Spring Boot项目就创建完成了,但还无法提供接口服务。要想提供接口,还需要下面的操作。
创建controller
在主程序目录下创建controller目录,在controller目录中创建HelloController.java
package com.hgt.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("hello")
public String hello(){
return "hello spring boot";
}
}
然后运行主程序,浏览器访问:http://localhost:8080/hello
出现这个界面,说明已经请求到了接口的数据,成功。
下面对HelloController.java的中两个注解加以说明,这里才是学习的重点:
- @RestController相当于@ResponseBody与@Controller加在一起的作用。使用此注解无法返回jsp页面或者html,需要返回页面的话,要使用@Controller 与InternalResourceViewResolver才行。
- @RequestMapping("hello")用于处理请求地址映射,用在类上表示类中的所有方法都以该地址作为父路径;用在方法上表示此方法的子路径。我们只添加到了方法了,类中未使用此注解则默认为根目录("/")
- hello()方法用于提供接口服务,在实际应用中,方法体内的内容为对数据库的增删改查,并把最终结果返回给前端面。
项目创建完成,并且可以响应请求,起步的工作就完成了。