为了账号安全,请及时绑定邮箱和手机立即绑定

Springboot3+JDK17搭建后端教程:新手入门详解

标签:
Java SpringBoot
概述

本文将详细介绍如何使用Springboot3+JDK17搭建后端应用,包括环境准备、项目搭建、配置与API开发等步骤。首先,你需要安装JDK 17和选择合适的IDE,如IntelliJ IDEA,并配置Maven或Gradle作为构建工具。接着,下载并配置Spring Boot 3,创建并配置Spring Boot项目,编写第一个RESTful API。最后,我们将演示如何进行项目的部署与调试。

环境准备

在开始使用Spring Boot 3和JDK 17搭建后端应用之前,你需要确保你的开发环境已经准备好。以下是需要完成的步骤:

检查操作系统兼容性

确保你的操作系统是支持Java的,例如Windows、macOS、Linux等。你可以在Oracle官网或OpenJDK官网查询JDK的兼容性列表。以Windows操作系统为例,确保其版本为Windows 10或Windows Server 2016及以上版本。

安装JDK 17

你可以从官方网站下载JDK 17的安装包。下载完成后,按照安装向导进行安装。安装过程中需要注意的是,安装目录路径不要包含空格。

安装完成后,需要在环境变量中配置JDK的安装路径。具体操作方法如下:

  1. 打开“此电脑” > “系统属性” > “高级系统设置” > “环境变量”。
  2. 在“系统变量”下,选择“新建”,然后添加JAVA_HOME变量,值为JDK的安装路径。例如:C:\Program Files\Java\jdk-17(不建议使用包含空格的路径)。
  3. 添加PATH变量,值为%JAVA_HOME%\bin

确保你的命令行工具能够正确识别JDK安装路径,可以通过以下命令进行验证:

java -version
javac -version

这些命令会输出JDK版本信息,如果输出版本为17.x.x,则说明安装成功。

安装IDE(如IntelliJ IDEA或Eclipse)

你可以选择任意一款支持Spring Boot开发的IDE。这里以IntelliJ IDEA为例进行介绍。

  1. 访问IntelliJ IDEA官网下载并安装IntelliJ IDEA。
  2. 打开IntelliJ IDEA,进入“File” > “Settings” > “Plugins”,搜索并安装“Spring Boot”插件。

对于Eclipse,你可以按照以下步骤进行安装:

  1. 访问Eclipse官网下载并安装Eclipse IDE。
  2. 打开Eclipse,进入“Help” > “Eclipse Marketplace”,搜索并安装“Spring Tools Suite”插件。
安装Maven或Gradle

你可以选择使用Maven或Gradle作为构建工具。这里以Maven为例进行介绍。

  1. 访问Maven官网下载并安装Maven。
  2. 同样在环境变量中配置Maven的安装路径。具体操作方法与JDK类似,在“系统变量”中添加MAVEN_HOME变量,值为Maven的安装路径,然后在PATH变量中添加%MAVEN_HOME%\bin
  3. 通过以下命令验证安装是否成功:
mvn -version

输出版本信息,确认Maven已经安装成功。

下载并配置Spring Boot 3

你可以从Spring Initializr官网下载Spring Boot 3的项目模板。下载完成后,将项目导入到IDE中。

  1. 访问Spring Initializr官网并选择项目构建工具为Maven或Gradle。
  2. 选择对应的Java版本为Java 17。
  3. 选择项目模块为Spring Web。
  4. 点击“Generate”下载项目模板。
  5. 将下载的压缩包解压,然后导入到IntelliJ IDEA中。

导入完成后,IDE会自动下载相关依赖,确保你的项目能够正确运行。

创建Spring Boot项目

使用Spring Initializr创建一个新项目,并选择所需的依赖,例如Spring Web、Spring Data JPA等。接下来,我们将详细介绍如何创建和配置Spring Boot项目。

使用Spring Initializr创建新项目
  1. 访问Spring Initializr官网
  2. 选择项目构建工具为Maven或Gradle。这里以Maven为例。
  3. 选择Java版本为Java 17。
  4. 选择项目模块为Spring Web。
  5. 输入项目基本信息,例如项目名(hello-springboot),包名(com.example.hello)等。
  6. 点击“Generate”下载项目模板。
  7. 将下载的压缩包解压,然后导入到IntelliJ IDEA中。

导入完成后,IDE会自动下载相关依赖,确保你的项目能够正确运行。

选择所需的依赖

在创建项目时,你可以选择所需的依赖。例如,我们选择了Spring Web依赖,这将帮助我们创建Web应用。

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

选择依赖后,Spring Boot将自动下载并配置所需的库和框架。

项目结构介绍

创建完成后,项目结构应该如下所示:

hello-springboot
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── hello
│   │   │               ├── HelloApplication.java
│   │   │               └── controller
│   │   │                   └── GreetingController.java
│   │   └── resources
│   │       ├── application.properties
│   │       └── static
└── pom.xml

主应用程序类

主应用程序类是Spring Boot应用的入口点。它通常位于src/main/java/<package>/HelloApplication.java

package com.example.hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

控制器类

控制器类用于处理HTTP请求。它通常位于src/main/java/<package>/controller/GreetingController.java

package com.example.hello.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, World!";
    }
}

配置文件

配置文件位于src/main/resources/application.propertiesapplication.yml。这里使用application.properties作为示例。

server.port=8080
spring.application.name=hello-springboot

以上是创建和配置Spring Boot项目的步骤。接下来,我们继续配置Spring Boot应用的基本设置。

配置Spring Boot应用

配置Spring Boot应用的基本设置对于确保应用能够正常运行十分重要。这些设置包括应用的基本属性、数据库连接配置、端点配置等。

配置应用的基本设置

Spring Boot允许通过application.propertiesapplication.yml文件来配置应用的基本属性。例如,你可以设置应用的端口号、应用名称等。

server.port=8080
spring.application.name=hello-springboot

这些配置文件位于src/main/resources/目录下。你可以根据需要添加更多属性。

数据库连接配置

Spring Boot可以使用JPA来连接数据库。这里以连接本地MySQL数据库为例。

首先,在pom.xmlbuild.gradle文件中添加JPA和MySQL驱动依赖。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
</dependencies>

然后,在application.properties文件中添加数据库连接配置。

spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

这些配置将告诉Spring Boot如何连接到数据库。

端点配置

Spring Boot提供了一些内置的端点,例如健康检查和文档端点。这些端点可以通过配置文件启用或禁用。

management.endpoints.web.exposure.include=health,info
management.endpoint.health.show-details=always

这些配置将启用健康检查端点,并显示详细信息。

编写第一个RESTful API

编写第一个RESTful API是着手开始使用Spring Boot进行后端开发的最好方式。我们将创建一个简单的GET请求来获取问候信息,以及一个POST请求来保存信息。

创建Controller类

Controller类用于处理HTTP请求。在项目中创建一个新的Controller类,例如GreetingController

package com.example.hello.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/greetings")
public class GreetingController {
    @GetMapping
    public String sayHello() {
        return "Hello, World!";
    }

    @PostMapping
    public String saveGreeting(@RequestBody String greeting) {
        // Process the greeting
        return "Greeting saved: " + greeting;
    }
}

这里,@RestController注解用于标记该类为Controller类,@GetMapping@PostMapping注解用于处理HTTP GET和POST请求。

创建简单的GET和POST请求

在代码中,@GetMapping注解标记的方法用于处理GET请求,@PostMapping注解标记的方法用于处理POST请求。

@GetMapping
public String sayHello() {
    return "Hello, World!";
}

@PostMapping
public String saveGreeting(@RequestBody String greeting) {
    // Process the greeting
    return "Greeting saved: " + greeting;
}
测试API使用Postman或其他工具

你可以使用Postman或其他工具来测试API。例如,使用Postman,你可以发送GET请求到http://localhost:8080/greetings

Postman GET请求

对于POST请求,你需要在请求体中传递一个字符串。例如:

{
    "greeting": "Hello, Spring Boot!"
}

发送POST请求到http://localhost:8080/greetings

Postman POST请求

解决常见的HTTP状态码问题

常见的HTTP状态码问题包括404(未找到),500(内部服务器错误)等。你可以通过查看服务器日志或使用调试工具来解决这些问题。

例如,如果收到404错误,通常是因为请求的URL与Controller中的映射不匹配。检查Controller中的@RequestMapping注解是否正确设置了URL路径。

实战案例:CRUD操作

在实际开发中,CRUD操作是常见的需求。我们将通过一个简单的用户管理示例来演示如何创建Repository、Service和Controller层,定义实体类并映射到数据库表,实现增删改查功能,并处理异常和错误响应。

创建Repository、Service和Controller层

首先,创建一个新的实体类,例如User

package com.example.hello.model;

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
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

然后,创建对应的Repository接口。

package com.example.hello.repository;

import com.example.hello.model.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}

接下来,创建Service类。

package com.example.hello.service;

import com.example.hello.model.User;
import com.example.hello.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public List<User> findAll() {
        return (List<User>) userRepository.findAll();
    }

    public User findById(Long id) {
        Optional<User> optionalUser = userRepository.findById(id);
        return optionalUser.orElse(null);
    }

    public User save(User user) {
        return userRepository.save(user);
    }

    public void deleteById(Long id) {
        userRepository.deleteById(id);
    }
}

最后,创建Controller类。

package com.example.hello.controller;

import com.example.hello.model.User;
import com.example.hello.service.UserService;
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> findAll() {
        return userService.findAll();
    }

    @GetMapping("/{id}")
    public User findById(@PathVariable Long id) {
        return userService.findById(id);
    }

    @PostMapping
    public User save(@RequestBody User user) {
        return userService.save(user);
    }

    @DeleteMapping("/{id}")
    public void deleteById(@PathVariable Long id) {
        userService.deleteById(id);
    }
}
定义实体类并映射到数据库表

在实体类中,通过@Entity注解标记该类为实体类,通过@Id@GeneratedValue注解标记该类的主键字段。

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;

    // Getters and Setters
}
实现增删改查功能

在Service类中,提供了findAllfindByIdsavedeleteById方法来实现增删改查功能。

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public List<User> findAll() {
        return (List<User>) userRepository.findAll();
    }

    public User findById(Long id) {
        Optional<User> optionalUser = userRepository.findById(id);
        return optionalUser.orElse(null);
    }

    public User save(User user) {
        return userRepository.save(user);
    }

    public void deleteById(Long id) {
        userRepository.deleteById(id);
    }
}

在Controller类中,提供了对应的HTTP请求映射方法。

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> findAll() {
        return userService.findAll();
    }

    @GetMapping("/{id}")
    public User findById(@PathVariable Long id) {
        return userService.findById(id);
    }

    @PostMapping
    public User save(@RequestBody User user) {
        return userService.save(user);
    }

    @DeleteMapping("/{id}")
    public void deleteById(@PathVariable Long id) {
        userService.deleteById(id);
    }
}
处理异常和错误响应

在Service类中,可以通过Optional来处理查询结果为null的情况。

public User findById(Long id) {
    Optional<User> optionalUser = userRepository.findById(id);
    return optionalUser.orElse(null);
}

在Controller类中,可以通过@ExceptionHandler注解来处理异常。

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> findAll() {
        return userService.findAll();
    }

    @GetMapping("/{id}")
    public User findById(@PathVariable Long id) {
        return userService.findById(id);
    }

    @PostMapping
    public User save(@RequestBody User user) {
        return userService.save(user);
    }

    @DeleteMapping("/{id}")
    public void deleteById(@PathVariable Long id) {
        userService.deleteById(id);
    }

    @ExceptionHandler
    public ResponseEntity<String> handleException(Exception e) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("An error occurred");
    }
}
部署与调试

完成开发后,下一步是打包和部署应用。我们将详细介绍如何打包Spring Boot应用,部署到本地或云服务器,调试和监控应用,并进行日志管理。

打包Spring Boot应用

打包Spring Boot应用可以使用Maven或Gradle工具。这里以Maven为例。

  1. 在IDE中打开终端窗口。
  2. 通过以下命令打包应用:
mvn clean package

这将生成一个可执行的JAR文件,位于target/目录下。

部署到本地或云服务器

部署到本地服务器通常只需要将生成的JAR文件复制到服务器,并执行命令启动应用。

java -jar target/hello-springboot.jar

部署到云服务器的操作步骤大致相同,但需要确保服务器有足够的内存和网络带宽。

调试和监控应用

你可以使用IDE中的调试功能来调试应用。例如,在IntelliJ IDEA中,可以在代码中设置断点,然后运行应用。

监控应用可以使用Spring Boot提供的/actuator端点。例如,可以通过http://localhost:8080/actuator访问监控信息。

日志管理

Spring Boot支持多种日志框架,例如Logback、Log4j等。默认情况下使用Logback。

你可以在application.properties文件中配置日志级别。

logging.level.root=INFO
logging.level.com.example=DEBUG

此外,你还可以配置日志文件路径和格式。

logging.file.path=/var/log/springboot
logging.file.name=springboot.log
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n

以上是部署与调试的步骤。通过这些步骤,你可以确保你的应用能够正确打包、部署、调试和监控。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消