本人是Android客户端出身,后端一概不知,但是现在做的很多事情,必须去学习下,后端是怎么样的,好在了解java语言,后台上后还不错
学习下大名鼎鼎的Springboot框架,为了给我的前端提供Api
涉及到有 springboot,mysql的安装使用,navicat查看,建表,eclipse大坑的使用,springboot 打包,postman 模拟请求,tomcat web应用服务器的使用部署以及启动
- Springboot 与 eclipse
本来想用idea,但是无奈,idea不免费,折腾很久破解也失败了
eclipse 需要安装springboot插件 Help - > eclipseMarketoplace 找到 SpringTools 4 安装 本人 Eclipse 是 Eclipse IDE for Enterprise Java and Web Developers (includes Incubating components) 一定要选这个版本的eclipse安装,而不要使用一般的java 版本的eclipse,不然你新建工程会没有Spring
2 新建工程
新建工程 file -> new -> Project ->Spring boot->Spring starter Project (你安装这个就会有这个选项)
上面就是新建工程注意两个箭头的地方,一个是版本建议用没有后缀不带 snapshoot的,再有就是选择 Srping web,然后finish结束建立工程
- 如何写接口如何与mysql数据库建立连接
看下pom.xml 的dependence ,springboot可以使用gradle构建,也可使用maven构建
maven构建 包谷管理配置是在pom。xml 就类似 Android里 工程里的 build. gradle 生命 implence 包一样
maven使用pom.xml进行包管理
我们需要以下包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.17</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.arcturis</groupId>
<artifactId>demo-maven-3</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo-maven-3</name>
<description>Demo project for Spring Boot</description>
<packaging>war</packaging>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--简化bean代码-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--json-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.80</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>DemoMaven3</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
他这个dependece 里面 groupid是包管理公司名 artifactId 就是包名,你还能声明version包版本,还有个重要的scope,有几个个重要参数 compile,test,provided
compile 指的后面把这个包一起打包到工程最终包里面,test是指的,这个包只供测试,provded是部署后部署容器提供所需的包,这个类最终不会打包进工程最终包,这个以下是详细解释
javax.servlet-api 这个单独拿出来说,里面mysql jdbc json一些的,不说了,这个包是为了servlet打包部署到tomcat采用的,tomcat自身容器有提供,所以scope是provided
spring-boot-starter-data-jpa 是动态操作数据层的包,允许动态操作数据库
<packaging>war</packaging> 这个参数代表你的工程最终打包成war包,war包后续可以部署至tomcat ,tomcat会解析读取
build标签下 <finalName>DemoMaven3</finalName> 这个就是最红war包的包名
- 一些spring工程文件解释
如何写一个api接口呢, 请使用@RestController
@RequestMapping("/users") 这个/users 就是你api请求的开始的路径
如何操作数据库呢
主要就是引入的这三个包,jdbc,jpa,还有mysql connector
你在数据库里建好表,然后建好对应的bean类比如
@Entity表明是一个实体类 @Table 是你数据库里的表名 @Id是主键 @Generatedvalue 主键生成策略 @Column 表字段名
ok建好实体
建一个Dao类操作数据库 Jpa可以自动生成数据库操作方法,你只需要集成JpaRepository就行
请求怎么写
@RequestMapping("/xxx") 表明这是一个Http请求
@ResponseBody 会将你的返回绑定至web Responebody中
ok 这个 userREspository 就是咱们的Dao层数据库 , 在开头定义生命 打上@Autowired注解即可
@Autowired
private UserRespository userREspository;
就能愉快的使用Dao 操作Mysql了
Post请求怎么写
PostMapping 表明这是个Post请求
- 如何打包部署至Tomcat
写一下mysql 连接属性 在resouce 文件夹下 application.proprity 里
spring.datasource.url=jdbc:mysql://localhost:3306/users?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.mvc.hiddenmethod.filter.enabled=true
Tips:原先characterEncoding值是UTF-8mb4 导致数据库连接报错,这里需要改成UTF-8 就行了,不然会字符集不匹配
我们打包的东西,最终在哪里的呢,如何打包呢,右键工程 run as- > Maven install
ok 就会在 target 文件夹下 有你的输出出来的 xxx.war 文件
然后在 tomcat conf 目录 server.conf 配置文件
Host标签下 增加
<Context path="/users" docBase="C:\spring\DemoMaven3.war" reloadable="true"></Context>
path属性是区分不同的web应用 比如你接口地址是/user/getAllUsers 那么 path增加了 users之后 接口地址就是/users/user/getAllUsers
docBase 是你在服务器上 war的绝对路径
- 调试测试
开始请求把
别忘了开启你对应的云服务器端口
里面很多注解 的解释不是官方的解释,是我自己的理解会有偏差,本文主要是复现整个流程,具体注解可以去官方查看具体用法