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

SpringBoot3+JDK17搭建后端入门教程

标签:
Java SpringBoot
概述

本文将详细介绍如何使用Spring Boot 3和JDK 17搭建后端入门项目,涵盖开发环境搭建、项目创建、数据库集成及测试部署等步骤。通过本文,读者可以快速上手Spring Boot 3和JDK 17的开发,从基础到实践,一步步深入理解这些技术的应用。

SpringBoot3和JDK17简介
什么是SpringBoot3

Spring Boot 是基于Spring框架的一个轻量级框架,旨在简化Spring应用的配置和开发过程。Spring Boot 3 是Spring Boot的最新版本,提供了许多新的特性和改进,如支持Java 17、增强的日志功能、改进的开发体验等。

Spring Boot 3 的主要特性包括:

  • Java 17 支持:Spring Boot 3 支持Java 17,允许开发者使用最新的Java功能。
  • 增强的日志功能:提供了更灵活的日志配置选项,更好地满足开发需求。
  • 改进的开发体验:提升了开发者工具,优化了开发体验。
  • 内置Web服务器:支持嵌入式的Tomcat、Jetty或Undertow等Web服务器,简化部署过程。
  • 零配置启动:大多数情况下,开发者不需要编写任何XML或配置代码即可启动应用。
什么是JDK17

JDK 17 是Java SE 17的简称,是Oracle公司发布的Java开发工具包。JDK 17 是长期支持版本(LTS),将得到长期的技术支持和维护。JDK 17 引入了多项新特性和改进,包括:

  • Switch表达式:允许使用switch语句匹配枚举、字符串或数字。
  • 密封类:允许对类和接口进行访问控制,以限制访问权限。
  • 文本块:允许定义多行字符串字面量,解决多行字符串拼接问题。
  • 记录类:一种新的类类型,用于表示不可变的数据载体。
  • 模式匹配:允许在模式匹配中使用类型检查。
  • 增强的异常处理:改进了异常处理机制,提高了代码的健壮性。
SpringBoot3与JDK17的优势
  • 性能提升:JDK 17 引入了ZGC(Z Garbage Collector)和Shenandoah GC等新的垃圾回收器,提高了应用的性能。
  • 开发效率:Spring Boot 3 提供了自动化配置和内置的开发工具,大大提高了开发效率。
  • 安全性:Spring Boot 3 和JDK 17 增强了安全特性,如加密支持、安全配置等。
  • 兼容性:Spring Boot 3 支持Java 17,确保了代码的兼容性和可维护性。
开发环境搭建
安装JDK17
  1. 访问Oracle官网下载JDK 17:https://www.oracle.com/java/technologies/javase/jdk17-downloads.html
  2. 按照安装向导安装JDK 17。
  3. 配置环境变量:
export JAVA_HOME=/path/to/jdk-17
export PATH=$JAVA_HOME/bin:$PATH
  1. 验证安装:
java -version

输出结果应包含17字样。

安装IDE(如IntelliJ IDEA或Eclipse)

IntelliJ IDEA

  1. 访问IntelliJ IDEA官网下载页面:https://www.jetbrains.com/idea/download/
  2. 按照安装向导完成安装。
  3. 配置IDEA:
# 打开IntelliJ IDEA
# 进入Preferences -> Build,Execution,Deployment -> Compiler
# 设置Java版本为17

Eclipse

  1. 访问Eclipse官网下载页面:https://www.eclipse.org/downloads/
  2. 按照安装向导完成安装。
  3. 配置Eclipse:
# 打开Eclipse
# 进入Window -> Preferences
# 找到Java -> Installed JREs -> Edit
# 添加Java 17的路径
创建SpringBoot3项目

使用Spring Initializr创建项目

  1. 访问Spring Initializr官网:https://start.spring.io/
  2. 选择项目信息:
    • Project:Maven Project
    • Language:Java
    • Spring Boot:3.0.0
    • Dependencies:选择需要的依赖,如Web、JPA等。
  3. 下载并解压项目:
# 解压文件
unzip project.zip -d /path/to/unzip
  1. 导入IDE中:在IDE中导入解压后的项目。

手动创建项目

  1. 创建Maven项目:
    • 在IDE中创建新Maven项目。
    • pom.xml中添加Spring Boot 3的依赖:
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.0</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  1. 创建主类:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
  1. 运行项目:在IDE中运行主类,启动应用。
第一个SpringBoot应用
项目结构介绍

一个Spring Boot项目的基本结构如下:

src
├── main
│   ├── java
│   │   └── com
│   │       └── example
│   │           └── myapp
│   │               ├── Application.java
│   │               └── controller
│   │                   └── HelloController.java
│   └── resources
│       └── application.properties
└── test
    └── java
        └── com
            └── example
                └── myapp
                    └── ApplicationTests.java

主类

主类是Spring Boot项目的入口点,使用@SpringBootApplication注解。

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

@SpringBootApplication
public class Application {

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

控制器

控制器是处理HTTP请求的组件,使用@RestController注解。

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!";
    }
}

配置文件

资源文件夹中的application.properties用于配置应用属性。

# application.properties
server.port=8080
创建第一个Controller

控制器用于处理HTTP请求。使用@RestController注解标记控制器类。

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!";
    }
}
测试应用

运行主类启动应用,访问http://localhost:8080/hello,应该能看到Hello, World!

常用注解和配置详解
@RestController和@RequestMapping

@RestController

@RestController注解用于标记控制器类,表明该类是REST风格的控制器。

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

@RestController
public class HelloController {

    // Controller methods
}

@RequestMapping

@RequestMapping注解用于映射Web请求到控制器类或方法。

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 HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}
@Service和@Repository

@Service

@Service注解用于标记服务层类,表示该类是一个服务组件。

import org.springframework.stereotype.Service;

@Service
public class UserService {

    // Service methods
}

@Repository

@Repository注解用于标记数据访问层类,表示该类是一个数据访问组件。

import org.springframework.stereotype.Repository;

@Repository
public class UserRepository {

    // Repository methods
}
@Autowired和@Value

@Autowired

@Autowired注解用于自动装配依赖,实现依赖注入。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    // Service methods
}

@Value

@Value注解用于注入属性值。

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

@Service
public class ConfigService {

    @Value("${app.name}")
    private String appName;

    // Service methods
}
数据库集成
使用SpringBoot集成MySQL

添加依赖

pom.xml中添加MySQL和Spring Data JPA的依赖:

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

配置数据库连接

application.properties中配置数据库连接信息:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update

创建实体类

创建实体类,使用@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.IDENTITY)
    private Long id;
    private String name;
    private String email;

    // Getters and Setters
}

创建Repository接口

创建Repository接口,继承JpaRepository

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    // Custom query methods
}

创建Service层逻辑

创建Service类,实现业务逻辑:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {

    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

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

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

创建控制器,处理HTTP请求:

import org.springframework.beans.factory.annotation.Autowired;
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.RestController;

@RestController
@RequestMapping("/users")
public class UserController {

    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

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

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

查询示例

查询所有用户:

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

创建新用户:

@PostMapping
public User createUser(@RequestBody User user) {
    return userService.save(user);
}
测试和部署
单元测试

编写单元测试,确保代码正确:

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;

import static org.junit.jupiter.api.Assertions.assertEquals;

@SpringBootTest
public class UserServiceTest {

    @Autowired
    private UserService userService;

    @Test
    public void testFindAll() {
        List<User> users = userService.findAll();
        assertEquals(0, users.size());
    }

    @Test
    public void testSave() {
        User user = new User();
        user.setName("Test");
        user.setEmail("test@example.com");
        User savedUser = userService.save(user);
        assertEquals("Test", savedUser.getName());
    }
}
打包和部署

打包应用

使用Maven或Gradle打包应用:

mvn clean package

生成的jar文件在target目录下。

部署应用

将生成的jar文件部署到服务器,运行应用:

java -jar target/myapp.jar
总结

本文介绍了如何使用Spring Boot 3和JDK 17搭建后端应用。通过详细的步骤,我们学习了搭建开发环境、创建第一个项目、集成数据库、进行测试和部署。更多信息可以参考Spring Boot官方文档。

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消