一,Spring Boot基础应用
1.Spring Boot特征
概念:
约定优于配置,简单来说就是你所期待的配置与约定的配置一致,那么就可以不做任何配置,约定不符合期待时才需要对约定进行替换配置。
特征:
1. SpringBoot Starter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中。
2,使编码变得简单,SpringBoot采用 JavaConfig的方式对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率,比如@Configuration和@bean注解结合,基于@Configuration完成类扫描,基于@bean注解把返回值注入IOC容器。
3.自动配置:SpringBoot的自动配置特性利用了Spring对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们。
4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了,SpringBoot的项目可以打成一个jar包。
2.配置JDK和Maven
IDEA中如何配置JDK:https://juejin.cn/post/7024078227282853924
IDEA中如何配置Maven:https://juejin.cn/post/6844904096961396749?searchId=20230905154132D113B687F6BB6AD98CC3
3.Spring Boot依赖
Spring Boot提供了许多starter依赖,用于快速配置和集成常见功能。在项目的构建配置文件(如pom.xml或build.gradle)中,添加所需的Spring Boot依赖。
springboot项目的总(父)依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.7.15</version>
</parent>
当我们使用 spring 或 spring-boot 开发项目时,需要引入很多依赖,包括 spring 本身的组件、各种 spring-boot-starter、以及其它第三方依赖(如:slf4j、redis)。依赖多了,版本的选择是个问题,就怕哪个版本选择的不对导致出现一些意想不到的 BUG。
4.创建项目
使用Spring Initializer快速创建Spring Boot项目
创建Spring Boot项目
-
打开 IntelliJ IDEA,选择 "File" -> "New" -> "Project"。
-
在左侧面板中选择 "Spring Initializr",然后点击 "Next"。
-
在 "Project SDK" 中选择你想要使用的 JDK 版本,然后点击 "Next"。
-
在 对话框中,配置项目的基本信息:
-
Group: 设置项目的 GroupId,例如
com.lzzy
-
Artifact: 设置项目的唯一标识符,一般和项目名相同,例如
my-spring-boot1
-
Name: 设置项目的名称
-
Version:使用默认生成的版本号
-
创建用于Web访问的请求处理控制类
创建一个控制器类来处理 HTTP 请求。例如,创建一个名为 HelloController.java 的类:
package com.example;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/hello")
public class HelloController {
@GetMapping
public String hello() {
return "Hello, world!";
}
}
运行项目
运行 Spring Boot 应用程序:右键点击 Application 类,选择 "Run Application.main()",或者点击类上方的绿色三角形按钮。
打开浏览器,并访问 http://localhost:8080/hello
,你将会看到输出 Hello, world!
。
5.核心配置与注解
Spring Boot中有许多常用的注解,它们可以帮助简化开发并提高代码的可读性和可维护性。以下是一些常见的Spring Boot注解及其简要介绍:
-
@SpringBootApplication
:用于标注主程序类,表明这是一个Spring Boot应用的入口。 -
@Controller
:将类标识为Spring MVC控制器,处理HTTP请求。 -
@RestController
:结合了@Controller
和@ResponseBody
,常用于编写RESTful风格的接口。 -
@RequestMapping
:用来映射Web请求,可以用在类或方法上,指定处理的URL路径。 -
@Autowired
:用于自动装配Bean,可以标注在属性、构造方法、Setter方法上。 -
@Component
:通用的Spring组件注解,表示一个受Spring管理的组件。 -
@Service
:标注服务层组件。 -
@Repository
:标注数据访问组件,通常用于DAO类。 -
@Configuration
:指示类包含Spring应用程序上下文的bean定义。 -
@Value
:用于将配置文件中的值注入到属性中。 -
@Qualifier
:在进行自动装配时指定需要注入的Bean名称。 -
@Async
:标注异步方法或类,告诉Spring这是一个异步方法。
6. 数据层框架的整合和使用
数据层框架在Spring Boot中起着至关重要的作用,它们可以帮助我们简化数据库操作、提高开发效率。下面我将简要介绍JdbcTemplate、MyBatis和MyBatis-Plus这三种数据层框架的原理以及在Spring Boot中的应用实现。
-
JdbcTemplate:
- 原理:JdbcTemplate是Spring提供的基于JDBC的模板类,通过它可以方便地进行数据库操作,包括增删改查等操作。
- 应用实现:在Spring Boot中,可以通过注入JdbcTemplate实例来进行数据库操作,JdbcTemplate封装了JDBC的繁琐操作,使用起来更加方便。
-
MyBatis:
- 原理:MyBatis是一种基于Java的持久层框架,它将SQL语句与Java方法相映射,通过XML或注解的方式配置SQL映射关系。
- 应用实现:在Spring Boot中整合MyBatis通常需要配置SqlSessionFactoryBean、MapperScannerConfigurer等bean,同时编写对应的Mapper接口和SQL映射文件。MyBatis能够提供灵活的SQL编写方式,适用于需要定制化SQL的场景。
-
MyBatis-Plus:
- 原理:MyBatis-Plus是在MyBatis基础上进行了扩展的增强工具,提供了更多便捷的CRUD操作、条件构造器、分页插件等功能。
- 应用实现:在Spring Boot中整合MyBatis-Plus相对简单,只需引入相应的依赖,并且创建对应的实体类即可使用MyBatis-Plus提供的丰富功能,大大简化了数据库操作。
整合和使用Thymeleaf
在Spring Boot中整合和使用Thymeleaf非常常见,Thymeleaf是一个用于Web和独立环境的现代化服务器端Java模板引擎,它能够处理HTML、XML、JavaScript、CSS甚至纯文本。
下面是在Spring Boot中整合和使用Thymeleaf的基本步骤:
-
引入Thymeleaf依赖: 在
pom.xml
文件中引入Thymeleaf的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
-
配置Thymeleaf: Spring Boot会自动加载Thymeleaf模板,一般情况下不需要进行额外的配置。如果需要进行自定义配置,可以在
application.properties
或application.yml
中设置相关属性。 -
创建Thymeleaf模板文件: 在
src/main/resources/templates
目录下创建Thymeleaf模板文件,例如index.html
,并使用Thymeleaf的语法编写页面。 -
在Controller中使用Thymeleaf: 在Controller中返回Thymeleaf模板的名称,Spring Boot会根据模板的名称自动寻找对应的Thymeleaf模板文件进行渲染。
-
使用Thymeleaf语法: 在Thymeleaf模板文件中可以使用Thymeleaf的语法,包括表达式、循环、条件判断等,来动态渲染页面内容。
举个例子,在Controller中返回index
作为模板名称:
@Controller
public class MyController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("name", "Thymeleaf");
return "index";
}
}
在index.html
中使用Thymeleaf语法:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello Thymeleaf</title>
</head>
<body>
<p th:text="'Hello, ' + ${name} + '!'"></p>
</body>
</html>
当访问/hello
路径时,将会渲染index.html
页面,并将Hello, Thymeleaf!
显示在页面上。
总的来说,Thymeleaf作为Spring Boot的默认模板引擎,能够与Spring Boot完美整合,通过简单的配置和使用Thymeleaf的语法,可以快速地开发出美观、动态的页面。
整合和应用Bootstrap
在Spring Boot项目中整合和应用Bootst
rap前端框架是非常常见的,Bootstrap是一个流行的开源前端框架,提供了响应式布局、UI组件、jQuery插件等,可以帮助我们快速构建现代化的Web页面。
以下是在Spring Boot中整合和应用Bootstrap前端框架的基本步骤:
-
引入Bootstrap依赖: 在
pom.xml
文件中引入Bootstrap的相关依赖。Bootstrap通常通过CDN(内容分发网络)引入,也可以将其下载到本地并引入。
<!-- 通过CDN引入 Bootstrap 的 CSS 文件 -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<!-- 引入 Bootstrap 的 JavaScript 文件 -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
-
创建页面: 在Spring Boot项目中创建HTML页面,并在页面中使用Bootstrap提供的CSS类、组件以及JavaScript插件来构建页面。
-
利用Thymeleaf动态渲染页面(可选): 如果在Spring Boot中使用Thymeleaf模板引擎,可以结合Thymeleaf的语法和Bootstrap来动态地渲染页面内容。
举个例子,假设我们在Thymeleaf页面中使用Bootstrap的网格系统和按钮组件:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Bootstrap Integration</title>
<!-- 引入 Bootstrap 的 CSS 文件 -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1 th:text="${pageTitle}">Hello, Bootstrap!</h1>
<div class="row">
<div class="col-md-6">
<button type="button" class="btn btn-primary">Primary Button</button>
</div>
<div class="col-md-6">
<button type="button" class="btn btn-secondary">Secondary Button</button>
</div>
</div>
</div>
<!-- 引入 Bootstrap 的 JavaScript 文件 -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
</body>
</html>
在上述例子中,我们在Thymeleaf页面中引入了Bootstrap的CSS和JavaScript文件,并使用了Bootstrap提供的网格系统和按钮组件来构建页面。
7.练习
下面是我上课做的比较好的练习。在Spring Boot中实现实体类的增删改查操作的示例项目。
假设我们有一个简单的实体类Product
,它包含id
、name
和price
属性,我们希望在Spring Boot中实现对这个实体类的增删改查操作。
-
创建实体类: 首先创建
Product
实体类,定义相应的属性和方法:public class Product { private Long id; private String name; private BigDecimal price; // 省略构造函数和其他方法 // getter 和 setter 方法 }
创建Repository接口: 创建
ProductRepository
接口,继承自Spring Data JPA的JpaRepository
接口,用于对数据库进行CRUD操作:
public interface ProductRepository extends JpaRepository<Product, Long> {
}
创建Controller: 创建ProductController
,处理HTTP请求并调用Service层完成业务逻辑:
@RestController
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductRepository productRepository;
// 处理获取所有产品的请求
@GetMapping
public List<Product> getAllProducts() {
return productRepository.findAll();
}
// 处理创建产品的请求
@PostMapping
public Product createProduct(@RequestBody Product product) {
return productRepository.save(product);
}
// 处理更新产品的请求
@PutMapping("/{id}")
public Product updateProduct(@PathVariable Long id, @RequestBody Product product) {
if (productRepository.existsById(id)) {
product.setId(id);
return productRepository.save(product);
} else {
return null; // 返回适当的错误信息
}
}
// 处理删除产品的请求
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable Long id) {
productRepository.deleteById(id);
}
}