当前位置: 首页 > news >正文

Spring Boot 常用 Starter

Spring Boot Starter 是 Spring Boot 提供的一系列预定义的依赖集合,旨在帮助开发者快速构建应用。这些 Starter 包含了常见的依赖和配置,极大地简化了项目的初始化和开发过程。本文将介绍一些常用的 Spring Boot Starter,并通过实际示例展示它们的使用方法。

1. Spring Boot Starter 概述

Spring Boot Starter 是一组 Maven 项目,它们以统一的方式打包和管理常见的依赖和配置。每个 Starter 都包含了一组相关的库和配置,使开发者无需手动添加和配置这些依赖,只需在项目中引入相应的 Starter 即可。

1.1 常用 Starter 列表

以下是一些常用的 Spring Boot Starter:

  • spring-boot-starter-web:用于构建 Web 应用,包括 RESTful 应用。
  • spring-boot-starter-data-jpa:用于与 JPA 一起工作,实现数据持久化。
  • spring-boot-starter-security:用于实现安全性功能。
  • spring-boot-starter-thymeleaf:用于 Thymeleaf 模板引擎。
  • spring-boot-starter-test:用于测试,包含 JUnit、Mockito 等测试框架。

2. Spring Boot Starter 的使用

2.1 引入依赖

在 Spring Boot 项目中使用 Starter 非常简单,只需在 pom.xml 文件中引入相应的依赖。例如:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.2 示例项目

下面通过一个简单的示例项目展示如何使用常用的 Spring Boot Starter。

步骤 1: 创建 Spring Boot 项目

使用 Spring Initializr 创建一个新的 Spring Boot 项目,选择 Web、JPA、Thymeleaf 和 H2 Database 依赖。

步骤 2: 配置数据源

application.properties 文件中配置 H2 数据库:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
步骤 3: 创建实体类

创建一个简单的实体类 User

package com.example.demo.entity;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Entity
public class User {@Id@GeneratedValue(strategy = GenerationType.AUTO)private Long id;private String name;private String email;// Getters and Setters
}
步骤 4: 创建 JPA 仓库

创建一个 JPA 仓库接口 UserRepository

package com.example.demo.repository;import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;public interface UserRepository extends JpaRepository<User, Long> {
}
步骤 5: 创建控制器

创建一个控制器 UserController 处理用户请求:

package com.example.demo.controller;import com.example.demo.entity.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;@Controller
public class UserController {@Autowiredprivate UserRepository userRepository;@GetMapping("/users")public String listUsers(Model model) {model.addAttribute("users", userRepository.findAll());return "user-list";}@GetMapping("/users/new")public String showUserForm(Model model) {model.addAttribute("user", new User());return "user-form";}@PostMapping("/users")public String saveUser(User user) {userRepository.save(user);return "redirect:/users";}
}
步骤 6: 创建 Thymeleaf 模板

src/main/resources/templates 目录下创建两个 Thymeleaf 模板 user-list.htmluser-form.html

user-list.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>User List</title>
</head>
<body><h1>User List</h1><a href="/users/new">Add New User</a><table><tr><th>ID</th><th>Name</th><th>Email</th></tr><tr th:each="user : ${users}"><td th:text="${user.id}"></td><td th:text="${user.name}"></td><td th:text="${user.email}"></td></tr></table>
</body>
</html>

user-form.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>Add User</title>
</head>
<body><h1>Add User</h1><form action="/users" th:object="${user}" method="post"><label for="name">Name:</label><input type="text" id="name" th:field="*{name}"><br><label for="email">Email:</label><input type="email" id="email" th:field="*{email}"><br><button type="submit">Save</button></form>
</body>
</html>
步骤 7: 启动应用

运行 DemoApplication 主类,启动应用并访问 http://localhost:8080/users

2.3 测试 Starter

Spring Boot 提供了 spring-boot-starter-test,包含了常用的测试框架,如 JUnit、Mockito 和 Spring TestContext Framework。

创建一个简单的单元测试类:

package com.example.demo;import com.example.demo.entity.User;
import com.example.demo.repository.UserRepository;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.context.SpringBootTest;import static org.assertj.core.api.Assertions.assertThat;@DataJpaTest
class UserRepositoryTests {@Autowiredprivate UserRepository userRepository;@Testvoid testSaveAndFindUser() {User user = new User();user.setName("John");user.setEmail("john@example.com");userRepository.save(user);User foundUser = userRepository.findById(user.getId()).orElse(null);assertThat(foundUser).isNotNull();assertThat(foundUser.getName()).isEqualTo("John");assertThat(foundUser.getEmail()).isEqualTo("john@example.com");}
}

3. 总结

Spring Boot Starter 是一个非常强大的工具,它极大地简化了项目的初始化和依赖管理工作。通过使用 Spring Boot Starter,开发者可以快速构建和配置各种类型的应用,而无需手动处理复杂的依赖和配置文件。在实际项目中,合理使用 Starter 能够显著提高开发效率和代码的可维护性。希望本文对你理解和使用 Spring Boot Starter 有所帮助。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JavaScript中的拷贝技术探秘:浅拷贝与深拷贝的奥秘
  • 光学传感器图像处理流程(二)
  • [FFmpeg] windows下安装带gpu加速的ffmpeg
  • 高考后的IT专业启航:暑期预习指南与学习路线图
  • [ACM独立出版]2024年虚拟现实、图像和信号处理国际学术会议(ICVISP 2024)
  • 微软子公司Xandr遭隐私诉讼,或面临巨额罚款
  • 每天一个数据分析题(四百二十三)- 置信区间
  • 研华PCI-1711板卡在WIN10教育版系统无法安装驱动
  • 【04】微服务通信组件Feign
  • 【Vue3组件】LottieAnimation组件封装,用于流畅的页面动画效果
  • 【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)
  • C/C++高性能网络库libhv
  • statswrapper.sh 对多个fastq/fasta文件进行基础信息计算
  • Python爬虫速成之路(1):获取网页源代码
  • Qt编程技巧小知识点(1)TCP缓存区数据读取
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • docker-consul
  • If…else
  • Sequelize 中文文档 v4 - Getting started - 入门
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 如何合理的规划jvm性能调优
  • 如何学习JavaEE,项目又该如何做?
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 怎样选择前端框架
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • # include “ “ 和 # include < >两者的区别
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • (~_~)
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (C)一些题4
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (六)激光线扫描-三维重建
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (顺序)容器的好伴侣 --- 容器适配器
  • (一)为什么要选择C++
  • (转)Unity3DUnity3D在android下调试
  • ******之网络***——物理***
  • .FileZilla的使用和主动模式被动模式介绍
  • .net 获取url的方法
  • .net/c# memcached 获取所有缓存键(keys)
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .Net的C#语言取月份数值对应的MonthName值
  • .net知识和学习方法系列(二十一)CLR-枚举
  • .NET中GET与SET的用法
  • [1159]adb判断手机屏幕状态并点亮屏幕
  • [1204 寻找子串位置] 解题报告
  • [20171106]配置客户端连接注意.txt
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [AIGC] 深入浅出 Python中的`enumerate`函数
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作