【spring boot】初学者项目快速练手

项目视频:一小时带你从0到1实现一个SpringBoot项目开发_哔哩哔哩_bilibili

注解视频:10、Java高级技术:注解:认识注解_哔哩哔哩_bilibili

一、基础知识

1.注解Annotation

(1)定义

注解是Java代码里的特殊标记,作用是让其他程序根据注解信息来决定怎么执行该程序

可以用在类、构造器、方法、成员变量、参数等位置处

举例:@Override表示重写,编译器可以验证@Override下面的方法名是否是父类中所有的,如果没有则报错,比如写错了方法名,不加的话会认为为子类定义了一个新方法。

(2)自定义注解

格式:

原理:

当注解中只有一个value属性时,使用注解时,value名称可以不写,直接写传入的参数

(3)元注解

含义:修饰注解的注解,一共有两个@Target和@Retention,其中使用@Target时,想要在多个位置使用,可以用逗号隔开传入多个值

2.泛型接口

二、Spging Boot简介

Spging Boot是基于Spring框架的开源框架,用于简化Spring应用程序的初始搭建和开发过程。

三、三层架构

1.API/Controller层

表示层/控制层,控制业务逻辑层Service,并把数据返回给移动端和前端,直接转发Service的业务处理结果,不能暴露Service的业务逻辑

新建一个Controller类,有两种写法:

(1)@Controller+@RequestMapping+@ResponseBody方式
java 复制代码
@Controller
public class TestController {

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    @ResponseBody
    public String hello() {
        return "Hello World!";
    }

}
(2)@RestController+@GetMapping(PostMapping、PutMapping...)方式
java 复制代码
@RestController
public class TestController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello World!";
    }

}

2.Service层

业务逻辑层/服务层,存放内部的业务逻辑,比如用户的增删改查、发送验证码或邮件,对分布式部署起到重要作用

3.Data Access Object(DAO)层

数据库持久化层,就是和数据库交互,对数据库表进行增删改查

常用的实现持久化层的框架有JPA( 不用手写SQL,项目复杂程度一般,追求稳定,迭代速率低的可以用JPA**)** 和MyBatis( 需要手写SQL,项目较复杂,需求变更频繁,迭代速度快的可以用MyBatis**)**

对象关系映射(Object Relational Mapping,简称ORM)是将数据库表与java实体对象做一个映射

4.数据库

四、代码结构

1.生成主程序

(1)在官网下载

Spring Initializr

选好需求模块,快速生成一个Spring Boot项目初始的代码,会生成一个demo文件

打开intellj idea,导入demo文件

(2)直接在intellj idea中创建

IDEA使用Spring Initializer快速创建Spring Boot项目(超详细)_idea springinitializer-CSDN博客

2.目录结构

|-------------------------------------------|----------------------------------------------------------------------------|
| 文件夹/文件 | 说明 |
| src-main-resources | 保存前端的静态文件或者配置文件,js css images |
| src-main-java | 保存源码 |
| pom.xml | **项目对象模型,**是Maven项目的核心配置文件,定义了项目的所有属性,包括项目的名称、版本、依赖关系、构建配置等,轻松管理项目的构建和依赖关系 |
| src-main-resources-application.properties | Spring Boot应用的配置文件,可以修改一些默认设置 |

3.运行

(1)运行BootDemoApplication

有main方法

需要先把JPA的依赖注释掉,然后打开localhost:8080验证是否配置成功

(2)@RestController创建API

新建一个Controller类,访问地址设置为:http://localhost:8080/hello

也可以返回list对象

(3)REST(RESTful) API 规范

表现层状态转化接口:可以使前后端解耦更彻底

  • 将一切数据(对象的单个实例)视作资源,每个网址(看URL)代表资源的位置(resource)
  • 利用HTTP请求方式(看Method),描述对资源的操作(增删改查)
  • 通过HTTP响应状态码(看Response Code),描述对资源的操作结果(如200/5xx)

客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化":

URL只能使用名词,不能使用动词:

五、项目开发(自下而上)

从数据库层依次往上层构建

1.创建数据库表

初始化数据库,添加数据

中配置数据库

2.构建Data Access层

在pom.xml中引入JPA依赖,需要用到JPA的注解

新建一个package:dao

在package中新建一个类:Student,查询数据库,并将数据库中的数据表映射为面向对象的类

|-----------------|-----------------------------------------------------------|
| 注解 | 说明 |
| @Entity | 定义该类将会成为被JPA管理的实体类,只有一个属性name,表示其所对应的数据库中的表名,可以省略 |
| @Table | 当实体类与其映射的数据库表名不同名时需要使用 @Table注解说明,该标注与 @Entity 注解并列使用 |
| @ID | 用于标识实体类中的主键字段,用于在数据库中唯一地标识一个实体 |
| @Column | 用来标识实体类中属性与数据表中字段对应关系,此例中属性和字段名相同 |
| @GeneratedValue | 用来表明主键的生成策略,其中strategy = DENTITY表示主键自增长 |

在package中新建一个Interface:StudentRepository,作为data access层

|-------------|---------------------------------------------------------------|
| 注解 | 说明 |
| @Repository | 修饰哪个类表明这个类具有对数据库CRUD(增删改查)的功能,用在持久层的接口上,实际上就是用来标注DAO层 |

3.构建Service层

新建一个package:service

在package中新建一个Interface:StudentService

在package中新建一个类:StudentServiceImpl,实现StudentService

|------------|-----------------------------------------------------------|
| 注解 | 说明 |
| @Service | 标记当前类是一个service类,将当前类自动注入到Spring容器中 |
| @Autowired | 直接应用于类的成员变量上,Spring 容器会自动为这些变量找到与其类型匹配的 Bean 实例,并进行注入 |

4.构建API层

新建一个package:controller

在package中新建一个类:StudentController

|---------------|-------------------------------------------------|
| 注解 | 说明 |
| @PathVariable | 可用于处理请求 URI 映射中的模板变量,并将其绑定到 Controller 方法参数 |
| @GetMapping | 可以用于类和方法上,用于定义HTTP GET请求的URL路径 |

5.运行

可以返回数据库的结果

六、项目优化

1.不直接返回整个数据库对象,只返回需要展示给前端的对象

新建一个StudentDTO类,返回id name

修改StudentService

新建一个类:StudentConverter,将数据库对象转化为返回给前端的DTO对象

修改StudentServiceImpl类

新建一个Response类,返回异常

修改StudentController

运行返回结果

七、新增Post接口

在StudentController中添加

在StudentRepository中添加,Email不同才能添加成功

在StudentCoverter中添加

在StudentService中添加

在StudentServiceImpl中添加

八、删除Delet接口

在StudentController中添加

在StudentService中添加

在StudentServiceImpl中添加

九、更新Put接口

在StudentController中添加

在StudentService中添加

在StudentServiceImpl中添加

十、打包项目

目录中生成包

可以通过java -jar启动项目,并修改端口名称

相关推荐
hlsd#2 分钟前
go mod 依赖管理
开发语言·后端·golang
陈大爷(有低保)7 分钟前
三层架构和MVC以及它们的融合
后端·mvc
亦世凡华、7 分钟前
【启程Golang之旅】从零开始构建可扩展的微服务架构
开发语言·经验分享·后端·golang
河西石头8 分钟前
一步一步从asp.net core mvc中访问asp.net core WebApi
后端·asp.net·mvc·.net core访问api·httpclient的使用
2401_8574396919 分钟前
SpringBoot框架在资产管理中的应用
java·spring boot·后端
怀旧66621 分钟前
spring boot 项目配置https服务
java·spring boot·后端·学习·个人开发·1024程序员节
李老头探索23 分钟前
Java面试之Java中实现多线程有几种方法
java·开发语言·面试
芒果披萨28 分钟前
Filter和Listener
java·filter
qq_49244844633 分钟前
Java实现App自动化(Appium Demo)
java
阿华的代码王国41 分钟前
【SpringMVC】——Cookie和Session机制
java·后端·spring·cookie·session·会话