SpringBoot项目开发学习:入门与实践指南
2024/10/21 23:33:11
本文主要是介绍SpringBoot项目开发学习:入门与实践指南,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Spring Boot 是一个简化 Spring 应用程序开发、配置和部署的框架,通过自动配置功能和约定优于配置的原则,大大减少了开发者的配置工作。本文将详细介绍 Spring Boot 项目开发的学习路径,包括环境搭建、项目创建、基础功能开发以及高级特性的探索。Spring Boot 项目开发学习涵盖了从入门到实战的全过程,帮助开发者快速构建独立的生产级应用。
SpringBoot简介什么是SpringBoot
Spring Boot 是一个基于 Spring 框架的开源项目,它旨在简化 Spring 应用程序的开发、配置和部署。Spring Boot 通过自动配置功能,减少了开发者编写配置代码的复杂度,使开发者能够快速构建独立的、生产级别的应用。
Spring Boot 通过约定优于配置的原则,减少了项目的配置文件数量,简化了项目的搭建过程。它提供了一套默认配置,开发者只需专注于业务逻辑的开发,而无需过多关注底层的配置细节。
SpringBoot的优点
-
快速应用开发
- Spring Boot 通过提供大量的默认配置,使得开发者能够快速搭建应用,无需编写大量的配置代码。
- 它内置了众多常用库和框架的自动配置,如 Spring MVC、Spring Data JPA、Spring Security 等,大幅提高了开发效率。
-
独立运行
- Spring Boot 应用程序可以独立运行,无需额外的中间件支持。它内置了一个嵌入式的 Tomcat、Jetty 或者 Undertow 服务器,使得开发和测试变得非常简单。
- 只需将代码编译打包为一个可执行的 jar 或 war 文件,就可以直接运行,无需安装额外的服务器。
-
配置简单
- Spring Boot 提供了一套默认配置,并允许开发者通过外部化配置来覆盖默认配置。
- 开发者可以使用
application.properties
或application.yml
文件来配置应用的各种属性,简化了配置过程。
- 嵌入式服务器
- Spring Boot 可以使用嵌入式服务器,如 Tomcat、Jetty 或 Undertow,这样使得应用可以作为一个独立的可执行 jar 文件运行。
- 开发者可以使用
mvn spring-boot:run
命令直接运行应用,无需额外的服务器安装步骤。
5.. 自动配置
- Spring Boot 通过自动配置功能,减少了开发者编写配置代码的复杂度。
- 它根据项目依赖自动配置 Spring Bean,简化了配置过程。
SpringBoot的核心概念
-
自动配置
- Spring Boot 通过自动配置功能,减少了开发者编写配置代码的工作量。
- 它会根据添加的依赖库自动配置 Spring Bean,简化了配置过程。例如,添加了 Spring Data JPA 依赖,Spring Boot 会自动配置数据源、实体管理器等。
-
外部化配置
- Spring Boot 提供了外部化配置功能,允许开发者通过
application.properties
或application.yml
文件来配置应用的各种属性。 - 开发者可以将配置文件放置在类路径下或外部目录中,以覆盖默认配置。
- Spring Boot 提供了外部化配置功能,允许开发者通过
-
starter 依赖
- Spring Boot 提供了大量 starter 依赖,如
spring-boot-starter-web
、spring-boot-starter-data-jpa
等,这些 starter 依赖包含了开发过程中常用的库和配置。 - 开发者只需要添加对应的 starter 依赖,就可以快速构建一个功能完备的应用程序。
- Spring Boot 提供了大量 starter 依赖,如
- Actuator
- Spring Boot Actuator 是一个用于监控和管理应用的模块,它提供了许多内置的端点,如
health
、info
、metrics
等。 - 开发者可以通过这些端点获取应用的运行时信息,以便进行监控和调试。
- Spring Boot Actuator 是一个用于监控和管理应用的模块,它提供了许多内置的端点,如
开发环境的搭建
开发 Spring Boot 应用程序首先需要搭建好开发环境。以下是搭建环境的基本步骤:
-
安装 JDK
- Spring Boot 应用程序需要 Java 环境,建议使用 JDK 8 及以上版本。
- 可以从 Oracle 官方网站下载安装包,或者使用 JDK 的第三方发行版,如 AdoptOpenJDK。
-
安装 IDE
- 推荐使用 IntelliJ IDEA 或 Eclipse,这两个 IDE 都支持 Spring Boot 开发。
- 安装 IDE 后,需要安装相应的插件来支持 Spring Boot 开发。例如,IntelliJ IDEA 提供了 Spring Boot 插件,可以方便地创建 Spring Boot 项目。
- 安装 Maven 或 Gradle
- Spring Boot 使用 Maven 或 Gradle 作为构建工具。
- Maven 是一个非常流行的 Java 构建工具,可以方便地管理项目依赖和构建过程。
- Gradle 是一个更现代的构建工具,它提供了更简洁的配置方式和更强大的功能。
创建第一个SpringBoot项目
创建一个 Spring Boot 项目可以使用 Spring Initializr(也可以称作 Spring Boot Initializr)来快速生成基本的项目结构和配置文件。以下是使用 Spring Initializr 创建项目的步骤:
-
访问 Spring Initializr 网站
- 访问 Spring Initializr 网站: https://start.spring.io/
- 选择项目的基本信息,如语言(Java)、依赖管理(Maven 或 Gradle)、Java 版本等。
-
添加依赖
- 在“Dependencies”(依赖)部分,添加所需的依赖。
- 例如,要创建一个 Web 应用,可以选择
Spring Web
依赖。 - 如果需要数据库支持,可以选择
Spring Data JPA
和Spring Data JDBC
等依赖。
- 生成项目
- 完成配置后,点击 “Generate”(生成)按钮,下载生成的项目压缩包。
- 解压压缩包,将项目导入到 IDE 中进行开发。
以下是使用 Maven 创建一个简单的 Spring Boot 项目并运行的示例代码:
<!-- pom.xml --> <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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>demo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
// DemoApplication.java package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
项目结构介绍
一个典型的 Spring Boot 项目结构如下:
src/main/java
:存放 Java 源代码。src/main/resources
:存放资源文件,如配置文件application.properties
或application.yml
。src/main/resources/static
:存放静态资源文件,如 HTML、CSS、JavaScript 文件。src/main/resources/templates
:存放 Thymeleaf 模板文件。src/main/resources/META-INF/resources
:存放静态资源文件,如 HTML、CSS、JavaScript 文件。src/main/resources/META-INF/spring.factories
:存放 Spring Boot 自动配置文件。pom.xml
或build.gradle
:项目的构建配置文件。README.md
:项目说明文件。
src/main/java
目录下通常会有一个 DemoApplication.java
文件,它是项目的主入口点。src/main/resources
目录下通常会有一个 application.properties
或 application.yml
文件,用于配置应用的各种属性。
控制器与路由配置
Spring Boot 通过 @Controller
或 @RestController
注解来定义控制器类。控制器类中的方法可以通过 @RequestMapping
或 @GetMapping
、@PostMapping
等注解来定义路由。
以下是一个简单的控制器类示例:
package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/hello") public String hello() { return "Hello, World!"; } }
在这个示例中,HelloController
类通过 @RestController
注解被标记为控制器类。hello
方法通过 @GetMapping
注解映射到 /hello
路径,当用户访问 /hello
路径时,服务会返回 "Hello, World!"
字符串。
模板引擎使用
Spring Boot 支持多种模板引擎,如 Thymeleaf、FreeMarker、Mustache 等。下面以 Thymeleaf 和 FreeMarker 为例,介绍如何使用模板引擎。
- 添加依赖
在 pom.xml
文件中添加 Thymeleaf 和 FreeMarker 依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
- 定义控制器
定义一个控制器来渲染模板:
package com.example.demo; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @Controller public class GreetingController { @GetMapping("/greeting") public String greeting(Model model) { model.addAttribute("message", "Hello, Thymeleaf!"); return "greeting"; } @GetMapping("/freemarker") public String freemarker(Model model) { model.addAttribute("message", "Hello, FreeMarker!"); return "freemarker"; } }
在这个示例中,GreetingController
类通过 @Controller
注解被标记为控制器类。greeting
方法通过 @GetMapping
注解映射到 /greeting
路径,当用户访问 /greeting
路径时,服务会渲染 greeting.html
模板并返回结果。freemarker
方法则渲染 freemarker.ftl
模板。
- 创建模板文件
在 src/main/resources/templates
目录下创建一个名为 greeting.html
的 Thymeleaf 模板文件,和一个名为 freemarker.ftl
的 FreeMarker 模板文件:
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Greeting</title> </head> <body> <h1 th:text="${message}"></h1> </body> </html>
<!DOCTYPE html> <html> <head> <title>FreeMarker Greeting</title> </head> <body> <h1>${message}</h1> </body> </html>
在这个示例中,greeting.html
模板文件中使用了 Thymeleaf 的 th:text
标签来插入 message
变量的值。freemarker.ftl
文件则直接使用 FreeMarker 的语法来插入变量。
数据库连接与操作
Spring Boot 支持多种数据库,如 MySQL、PostgreSQL、SQLite 等。下面以 MySQL 为例,介绍如何连接数据库并执行 CRUD 操作。
- 添加依赖
在 pom.xml
文件中添加 MySQL 依赖:
<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
- 配置数据源
在 application.properties
文件中配置数据源连接信息:
spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
- 定义实体类
定义一个实体类来表示数据库表结构:
package com.example.demo; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String email; // Getters and setters }
- 定义仓库接口
定义一个仓库接口来执行 CRUD 操作:
package com.example.demo; import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User, Long> { }
- 定义服务类
定义一个服务类来封装业务逻辑:
package com.example.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> getAllUsers() { return userRepository.findAll(); } public User getUserById(Long id) { return userRepository.findById(id).orElse(null); } public User createUser(User user) { return userRepository.save(user); } public User updateUser(Long id, User user) { User existingUser = userRepository.findById(id).orElse(null); if (existingUser != null) { existingUser.setName(user.getName()); existingUser.setEmail(user.getEmail()); return userRepository.save(existingUser); } return null; } public void deleteUser(Long id) { userRepository.deleteById(id); } }
在这个示例中,UserService
类通过 @Service
注解被标记为服务类。getAllUsers
方法返回所有用户列表,getUserById
方法根据用户ID获取单个用户,createUser
方法创建新用户,updateUser
方法更新用户信息,deleteUser
方法删除用户。
- 定义控制器
定义一个控制器来处理 HTTP 请求:
package com.example.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping public List<User> getUsers() { return userService.getAllUsers(); } @GetMapping("/{id}") public User getUser(@PathVariable Long id) { return userService.getUserById(id); } @PostMapping public User createUser(@RequestBody User user) { return userService.createUser(user); } @PutMapping("/{id}") public User updateUser(@PathVariable Long id, @RequestBody User user) { return userService.updateUser(id, user); } @DeleteMapping("/{id}") public void deleteUser(@PathVariable Long id) { userService.deleteUser(id); } }
在这个示例中,UserController
类通过 @RestController
注解被标记为控制器类。getUsers
方法返回所有用户列表,getUser
方法根据用户ID获取单个用户,createUser
方法创建新用户,updateUser
方法更新用户信息,deleteUser
方法删除用户。
配置文件管理
Spring Boot 支持多种配置文件,如 application.properties
、application.yml
等。这些配置文件可以放置在不同的位置,如类路径下、外部目录中等。Spring Boot 会根据配置文件的优先级顺序来加载配置。
- 配置文件优先级
配置文件的优先级顺序如下:
command line arguments
:命令行参数os environment variables
:环境变量java:comp/env
:Java 环境变量random values
:随机值jar packaged external config file
:打包后的外部配置文件external config file
:外部配置文件git configuration file
:Git 配置文件default values
:默认值
- 使用配置文件
例如,在 application.properties
文件中可以配置应用的各种属性:
spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
自动配置原理
Spring Boot 的自动配置原理是通过 @Configuration
类来定义配置 Bean,并通过 @Conditional
注解来限制配置 Bean 的创建条件。
- 自动配置类
Spring Boot 提供了大量的自动配置类,如 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
、org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration
等。
- 自动配置过程
自动配置过程主要包含以下几个步骤:
@Configuration
类通过@EnableAutoConfiguration
注解来启用自动配置。@Conditional
注解用于限制配置 Bean 的创建条件,如@ConditionalOnClass
、@ConditionalOnMissingBean
等。@Bean
方法用于定义配置 Bean。
例如,DataSourceAutoConfiguration
类通过 @ConditionalOnClass
注解来限制数据源自动配置的条件:
@ConditionalOnClass(name = "org.apache.tomcat.jdbc.pool.DataSource") public class DataSourceAutoConfiguration { // ... }
Actuator监控支持
Spring Boot Actuator 是一个用于监控和管理应用的模块,它提供了许多内置的端点,如 health
、info
、metrics
等。
- 启用Actuator
在 pom.xml
文件中添加 Actuator 依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
- 配置Actuator
在 application.properties
文件中配置 Actuator 端点:
management.endpoints.web.exposure.include=* management.endpoint.health.show-details=always
- 访问Actuator端点
启动应用后,可以通过访问 http://localhost:8080/actuator
来查看所有 Actuator 端点。
例如,访问 http://localhost:8080/actuator/health
可以查看应用的健康状态:
{ "status": "UP", "details": { "db": { "database": "MySQL", "dbTime": "2020-05-01T20:30:40.607+00:00" } } }实战案例解析
用户认证与权限管理
Spring Boot 结合 Spring Security 可以轻松实现用户认证与权限管理功能。
- 添加依赖
在 pom.xml
文件中添加 Spring Security 依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
- 配置安全规则
在 application.properties
文件中配置安全规则:
spring.security.user.name=admin spring.security.user.password=password spring.security.user.roles=ADMIN
- 定义安全配置类
定义一个安全配置类来配置安全规则:
package com.example.demo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() .withUser("admin") .password(passwordEncoder().encode("password")) .roles("ADMIN"); } @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/admin/**").hasRole("ADMIN") .antMatchers("/user/**").hasAnyRole("USER", "ADMIN") .antMatchers("/").permitAll() .and() .formLogin() .loginPage("/login") .permitAll() .and() .logout() .logoutUrl("/logout") .permitAll(); } @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } }
在这个示例中,SecurityConfig
类通过 @EnableWebSecurity
注解被标记为安全配置类。configure
方法配置了用户认证和权限管理规则,configure
方法配置了安全规则。
- 定义控制器
定义一个控制器来处理登录请求:
package com.example.demo; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class LoginController { @GetMapping("/login") public String login() { return "login"; } }
- 创建登录页面
在 src/main/resources/templates
目录下创建一个名为 login.html
的登录页面:
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Login Page</title> </head> <body> <h1>Login</h1> <form th:action="@{/login}" method="post"> <label for="username">Username:</label> <input type="text" id="username" name="username" required><br> <label for="password">Password:</label> <input type="password" id="password" name="password" required><br> <button type="submit">Login</button> </form> </body> </html>
- 定义全局异常处理器
定义一个全局异常处理器来处理异常:
package com.example.demo; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity<String> handleException(Exception ex) { return new ResponseEntity<>(ex.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } }
在这个示例中,LoginController
类通过 @Controller
注解被标记为控制器类。login
方法返回登录页面。GlobalExceptionHandler
类通过 @ControllerAdvice
注解被标记为全局异常处理器,处理所有类型的异常并返回 HTTP 500 状态码和异常信息。
RESTful API设计与实现
Spring Boot 结合 Spring MVC 可以轻松实现 RESTful API。
- 定义控制器
定义一个控制器来处理 HTTP 请求:
package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api") public class ApiController { @GetMapping("/hello") public String hello() { return "Hello, API!"; } }
在这个示例中,ApiController
类通过 @RestController
注解被标记为控制器类。hello
方法通过 @GetMapping
注解映射到 /api/hello
路径,当用户访问 /api/hello
路径时,服务会返回 "Hello, API!"
字符串。
- 定义资源
定义一个资源类来表示 RESTful API 的资源:
package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api/users") public class UserController { @GetMapping public List<User> getUsers() { return userService.getAllUsers(); } @GetMapping("/{id}") public User getUser(@PathVariable Long id) { return userService.getUserById(id); } @PostMapping public User createUser(@RequestBody User user) { return userService.createUser(user); } @PutMapping("/{id}") public User updateUser(@PathVariable Long id, @RequestBody User user) { return userService.updateUser(id, user); } @DeleteMapping("/{id}") public void deleteUser(@PathVariable Long id) { userService.deleteUser(id); } }
在这个示例中,UserController
类通过 @RestController
注解被标记为控制器类。getUsers
方法返回所有用户列表,getUser
方法根据用户ID获取单个用户,createUser
方法创建新用户,updateUser
方法更新用户信息,deleteUser
方法删除用户。
日志与异常处理
Spring Boot 支持多种日志框架,如 Log4j、Logback、JUL 等。Spring Boot 默认使用 Logback 作为日志框架。
- 配置日志
在 application.properties
文件中配置日志级别:
logging.level.root=INFO logging.level.com.example.demo=DEBUG
- 定义异常处理器
定义一个异常处理器来处理异常:
package com.example.demo; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity<String> handleException(Exception ex) { return new ResponseEntity<>(ex.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } }
在这个示例中,GlobalExceptionHandler
类通过 @ControllerAdvice
注解被标记为全局异常处理器。handleException
方法处理所有类型的异常,并返回 HTTP 500 状态码和异常信息。
SpringBoot项目部署
Spring Boot 应用程序可以作为独立的可执行 jar 文件运行。以下是部署 Spring Boot 应用程序的步骤:
- 打包项目
使用 Maven 或 Gradle 将项目打包为 jar 文件:
mvn package
或
gradle build
- 运行 jar 文件
使用 java -jar
命令运行 jar 文件:
java -jar target/demo-0.0.1-SNAPSHOT.jar
- 部署到云平台
可以将 Spring Boot 应用程序部署到云平台,如 AWS、Google Cloud、Azure 等。这些云平台提供了托管服务,如 Elastic Beanstalk、App Engine、App Service 等。
常见问题及解决方法
- 启动失败
如果启动失败,可以查看日志文件或控制台输出信息来定位问题。常见的问题包括依赖冲突、配置错误、资源不存在等。
- 性能问题
如果性能问题,可以使用 Spring Boot Actuator 来监控应用的运行时信息。例如,/actuator/metrics
端点可以查看应用的性能指标。
- 安全问题
如果安全问题,可以使用 Spring Security 来实现用户认证与权限管理功能。例如,@PreAuthorize
注解可以限制方法的访问权限。
进阶学习资源推荐
- 在线教程
- 慕课网
- Spring 官方文档
- Spring Boot 官方文档
- 开源项目
- Spring Boot 样例项目
- Spring Security 样例项目
- 社区
- Stack Overflow
- GitHub
学习 Spring Boot 不仅要掌握基础功能的开发,还需要了解高级特性的使用。推荐开发者积极参加社区活动,如参与开源项目、提交 Pull Request 等。
这篇关于SpringBoot项目开发学习:入门与实践指南的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15JavaMailSender是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-15JWT 用户校验学习:从入门到实践
- 2024-11-15Nest学习:新手入门全面指南
- 2024-11-15RestfulAPI学习:新手入门指南
- 2024-11-15Server Component学习:入门教程与实践指南
- 2024-11-15动态路由入门:新手必读指南
- 2024-11-15JWT 用户校验入门:轻松掌握JWT认证基础
- 2024-11-15Nest后端开发入门指南
- 2024-11-15Nest后端开发入门教程
- 2024-11-15RestfulAPI入门:新手快速上手指南