Spring Boot 这样学很快乐

简介: 今天分享一下 Spring Boot 的简单使用,通过本文的学习,你将了解 Spring Boot,并可以快速搭建 Spring Boot 环境,并完成 crud 的业务操作,同时还将学会 lombok 的使用,lombok是什么? 暂且不告诉你,嘿嘿 🚀

文章目录


Spring Boot


优点


初体验


pom.xml配置


lombok


快速实现 crud


测试


Spring Boot


Spring Boot 是一个快速开发的框架,可以迅速搭建出一套基于 Spring 框架体系的应用,是Spring Cloud 微服务的基础


Spring Boot 开启了各种自动装配,从而简化开发,不需要编写各种配置文件,只需要引入相关依赖,就可以迅速搭建一个应用 application


优点


1.不需要 web.xml


2.不需要 springmvc.xml


3.不需要 tomcat,因为Spring Boot内嵌了 tomcat


4.不需要配置 Json 解析,支持 REST 架构


5.个性化配置非常简洁清晰


初体验

这里使用 IDEA 开发工具,打开项目结构,点击加号,新建模块


844594a7bb8a41a1b21d94a3e9400299.png


新建模块选择 Spring Initializr,然后就是项目名,类型选择 maven


076797da42914e41b4ea83f15de8eb8b.png


选择 Spring Web 模块


97ccb2674204418e9e916031d5db8c0f.png


点击完成


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.6.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.liu</groupId>
    <artifactId>springboot_day</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot_day</name>
    <description>springboot_day</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <!--web 启动jar包-->
        <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>
        <!--引入lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.6</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>


lombok


可以看到,pom.xml中引入了一个 lombok 的依赖 jar 包,下面就来介绍一下它


lombok是什么


lombok既是一个IDE插件,也是一个项目要依赖的jar包


lombok能做什么


lombok通过注解消除实际开发中的样板式代码

什么是样板式代码?

比如 getter、setter方法,重写toString、equals方法等,这些代码没有什么技术含量,但是常常都要写,所以叫它样板式代码


lombok怎么使用


1.可以在官网下载 jar 包使用

2.如果你是使用maven构建项目,你可以引入依赖坐标即可


<!--引入lombok-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.6</version>
    <scope>provided</scope>
</dependency>


3.IDEA插件也可以


2ab30d5e95f647a0a074b3e6948c3990.png


在实体类上添加注解@Data,可以看到,在类结构中自动给我们生成了 getter setter toString 等等方法……,是不是很方便呢,其他常用注解如下,在类上可以使用@Data,在方法上可以使用 @Setter,@Getter,@Log4j注解等等


@Data 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、hashCode、toString 方法


@Setter :注解在属性上;为属性提供 setting 方法


@Getter :注解在属性上;为属性提供 getting 方法


@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象


@AllArgsConstructor :注解在类上,带参数构造器


1b8dee55f04e47819162cc71e15e7259.png


ok,关于 lombok 就介绍到这里


快速实现 crud


目录结构


6ecdce96948d4e4792ff21db2193bb11.png


pom.xml 依赖 jar 包


这里先导入依赖的父包


<!-- 继承父包 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.6</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
    <!--web 启动jar包-->
    <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>
    <!--引入lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.6</version>
        <scope>provided</scope>
    </dependency>
</dependencies>


实体类 User


实体类,由于使用了 lombok,看起来就很舒服了

@Data 给属性添加get set toString……

@AllArgsConstructor 添加一个所有参数的构造器


import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class User {
    private long id;
    private String name;
    private int age;
}


UserService接口


Service接口,这里就是快速测试一下,所以就省去了 DAO 层的开发,简简单单的 crud


public interface UserService {
    // 查所有的用户
    Collection<User> findAll();
    // 根据id查询用户
    User findById(long id);
    // 新增用户
    void save(User user);
    // 删除用户
    void deleteById(long id);
}


UserServiceImpl 业务层


注意要使用@Service注解,这样 Spring 才能扫描到 bean


@Service
public class UserServiceImpl implements UserService {
    private static Map<Long, User> userMap;
    static {
        userMap = new HashMap<>();
        userMap.put(1L,new User(1L,"小刘",18));
        userMap.put(2L,new User(2L,"张三",28));
        userMap.put(3L,new User(3L,"李四",45));
        userMap.put(4L,new User(4L,"韩非",16));
    }
    @Override
    public Collection<User> findAll() {
        return userMap.values();
    }
    @Override
    public User findById(long id) {
        return userMap.get(id);
    }
    @Override
    public void save(User user) {
        userMap.put(user.getId(),user);
    }
    @Override
    public void deleteById(long id) {
        userMap.remove(id);
    }
}


UserController 控制层


REST软件架构使用了CRUD原则,该原则告诉我们对于资源(包括网络资源)只需要四种行为:创建(Create)、获取(Read)、更新(Update)和销毁(DELETE),就可以组合成其他无数的操作。其实世界万物都是遵循这一规律:生、变、见、灭。这个原则是源自于我们对于数据库表的数据操作:insert(生)、select(见)、update(变)和delete(灭),所以有时候CRUD也写作为RUDI(read update delete insert)。这四个操作是最基本的操作,即无法再细分的操作,通过它们可以构造复杂的操作过程,正如数学上四则运算是数字的最基本的运算一样。


就是说使用这里使用 @RestController 它就相当于是 @Controller 和 @RequestBody 的结合体,其他的就是 SpringMVC 的基础知识了


// 表示这是一个REST架构风格的控制器
@RestController
@RequestMapping("/user")
public class UserController {
    // 需要 repository @Autowired注解 自动注入
    @Autowired
    private UserService userService;
    @GetMapping("/findAll")
    public Collection<User> findAll() {
        return userService.findAll();
    }
    @GetMapping("/findById/{id}")
    public User findById(@PathVariable("id") long id) {
        System.out.println("我被执行了");
        return userService.findById(id);
    }
    @PostMapping("/save")
    public void save(@RequestBody User user) {
        userService.save(user);
    }
    @PutMapping("/update")
    public void update(@RequestBody User user) {
        userService.save(user);
    }
    @DeleteMapping("deleteById/{id}")
    public void deleteById(@PathVariable long id) {
        userService.deleteById(id);
    }
}


yml Spring Boot 配置文件


修改一下 toncat 服务的端口为 9090,也可以做其他配置,这里先掠过


server:
  port: 9090


启动类


启动类,这里需要注意启动类的位置的包位置,必须能包含所有的子包,这样它启动之后,就知道自动扫描当前包以及子包,发现注解进行 bean 的定义以及自动装配等一系列的操作,如果不能包含,启动会报错,这一点需要注意


@SpringBootApplication
public class SpringbootDayApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootDayApplication.class, args);
    }
}


🆗,现在启动服务


deeedde9215c4cdbb042cae75ff80aa7.png


启动成功,现在使用 postman 进行接口的测试


测试


用于查询所有用户

接口地址 : http://localhost:9090/user/findAll

请求方式 : GET

参数 : 空


ef8543faa81842ee854e43e4e6536cc2.gif


用于根据id查询用户

接口地址 : http://localhost:9090/user/findById/2

请求方式 : GET

参数 : id 2


8b35005c9af24e55af8c4832b9f96929.gif


保存一个user对象

接口地址 : http://localhost:9090/user/save

请求方式 : POST

参数 : user对象


8b0b4c5f3ea14bc1ae37dd6d8f0ed343.gif





相关文章
|
6月前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
145 0
|
6月前
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
163 0
|
5天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
15 2
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
52 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
58 2
|
5月前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
53 2
|
5月前
|
存储 运维 Java
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
63 2
|
5月前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
423 1
|
5月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
54 1
|
5月前
springboot2.4.5使用pagehelper分页插件
springboot2.4.5使用pagehelper分页插件
152 0