手记

Springboot框架资料:新手入门教程

概述

本文提供了Spring Boot框架资料的新手入门教程,详细介绍Spring Boot的基本概念、优势、适用场景以及环境搭建等内容。文章详细介绍了如何安装JDK和IDE,创建Spring Boot项目,并配置项目的基本设置。通过示例展示了如何快速入门并构建简单的REST API,涵盖了Spring Boot的核心概念讲解和常见问题解答。Spring Boot框架资料在这里一应俱全。

Spring Boot框架资料:新手入门教程
Spring Boot简介

什么是Spring Boot

Spring Boot是由Pivotal团队提供的用于简化Spring应用初始搭建与开发过程的全新框架。Spring Boot的设计初衷是简化Spring应用程序的配置过程,通过提供一系列的默认配置,使得开发人员可以直接使用这些配置来快速构建项目。

Spring Boot的优势

  1. 快速启动:Spring Boot允许开发人员快速启动一个项目,无需配置大量的XML或Java配置。
  2. 依赖管理:Spring Boot会自动管理所需要的依赖,降低了开发者的配置工作量。
  3. 嵌入式服务器:Spring Boot内置了Tomcat、Jetty或Undertow等Web服务器,使得应用可以直接运行,无需手动部署。
  4. 自动配置:Spring Boot提供了大量配置的默认值,简化了应用的配置过程。
  5. 丰富的注解:使用注解可以快速创建Spring组件,并支持自动装配。
  6. 命令行接口:Spring Boot包含了Spring CLI,可以通过命令行启动和控制应用。

Spring Boot的适用场景

  1. 微服务架构:Spring Boot非常适合构建微服务,因为它可以快速启动应用,支持嵌入式服务器。
  2. 云原生应用:Spring Boot支持云原生的应用部署,可以轻松地部署到云平台上。
  3. 简单的REST API:Spring Boot非常适合构建简单的REST API,因为它的配置简单,开发效率高。
  4. 数据库操作:Spring Boot支持多种数据库操作,如JPA、MyBatis等,可以方便地进行数据库操作。
  5. Web应用开发:Spring Boot提供了丰富的Web开发工具,可以直接运行Web应用,无需手动配置服务器。
环境搭建

安装JDK

首先需要安装Java Development Kit (JDK)。访问JDK官方网站下载最新版本的JDK。安装过程如下:

  1. 打开浏览器,访问Oracle Java官方网站。
  2. 下载最新版本的JDK安装包。
  3. 运行下载的安装包,按照提示完成安装。
  4. 设置环境变量:
    • 设置JAVA_HOME环境变量指向JDK的安装路径。
    • 设置PATH环境变量添加以下路径:%JAVA_HOME%\bin

安装IDE(如IntelliJ IDEA或Eclipse)

推荐使用IntelliJ IDEA或Eclipse作为开发工具。

  1. IntelliJ IDEA
    • 下载并安装IntelliJ IDEA。
    • 打开IntelliJ IDEA,创建一个新的Spring Boot项目。
  2. Eclipse
    • 下载并安装Eclipse。
    • 安装Spring Boot插件,可以从Eclipse Marketplace下载。
    • 打开Eclipse,创建一个新的Spring Boot项目。

创建Spring Boot项目

  1. 打开IntelliJ IDEA或Eclipse。
  2. 创建新的Spring Boot项目:
    • 在IntelliJ IDEA中,选择"File" -> "New" -> "Project",选择Spring Initializr。
    • 在Eclipse中,选择"File" -> "New" -> "Spring Starter Project"。
  3. 填写项目信息:
    • Group ID:项目组ID。
    • Artifact ID:项目的唯一标识符。
    • Version:项目版本。
    • Name:项目名称。
    • Description:项目描述。
    • Language:选择Java或Kotlin。
    • Packaging:选择Jar或War。
    • Java:选择Java版本。
    • Spring Boot:选择Spring Boot版本。
  4. 添加所需依赖:
    • 在"Dependencies"选项中,添加所需的依赖。例如,添加Spring Web、Thymeleaf、Spring Data JPA等。

配置项目的基本设置

配置项目的Maven或Gradle构建文件。以下是使用Maven的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.3.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>

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

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
快速入门示例

创建第一个Spring Boot应用

  1. 创建一个新的Spring Boot项目。
  2. 添加Spring Web依赖。
  3. 创建主应用程序类。

示例代码:

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
│   │   └── com
│   │       └── example
│   │           └── demo
│   │               ├── DemoApplication.java
│   │               └── controller
│   │                   └── HelloController.java
│   └── resources
│       ├── application.properties
│       └── static
└── test
    └── java
        └── com
            └── example
                └── demo
                    └── DemoApplicationTests.java

运行第一个应用

  1. 在IDE中运行DemoApplication类的main方法。
  2. 应用启动后,访问http://localhost:8080,可以看到应用已经启动成功。
核心概念讲解

Starter依赖

Spring Boot Starter是一种依赖管理机制,通过引入一个Starter依赖,可以自动引入所有相关的依赖。例如,引入spring-boot-starter-web依赖,可以自动引入Spring Web所需的依赖。

示例代码:

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

自动配置

Spring Boot通过@SpringBootApplication注解自动配置应用程序。该注解包含@Configuration@EnableAutoConfiguration@ComponentScan三个注解。

示例代码:

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);
    }

}

配置文件(application.properties/application.yml)

Spring Boot支持使用application.propertiesapplication.yml文件来配置应用的属性。例如,配置数据库连接信息。

示例代码:

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.jdbc.Driver

application.yml文件:

spring:
  datasource:
  url: jdbc:mysql://localhost:3306/test
  username: root
  password: root
  driver-class-name: com.mysql.jdbc.Driver

常用注解介绍

  • @SpringBootApplication:组合了@Configuration@EnableAutoConfiguration@ComponentScan注解。
  • @RestController:用于定义控制器类。
  • @Service:用于标记服务层组件。
  • @Repository:用于标记数据访问层组件。
  • @Component:通用注解,标记任何Spring Bean。
  • @Autowired:用于自动装配依赖。
  • @Value:用于注入属性值。
  • @RequestMapping:用于映射HTTP请求。

示例代码:

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

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot!";
    }

}
实践案例:构建简单REST API

创建REST控制器

创建一个控制器类,用于处理HTTP请求。

示例代码:

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

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot!";
    }

}

使用Spring Data JPA进行数据库操作

  1. 添加Spring Data JPA依赖。
  2. 配置数据库连接。
  3. 创建实体类。
  4. 创建仓库接口。
  5. 创建服务类。

示例代码:

  1. 添加依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
  1. 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
  1. 实体类
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

}
  1. 仓库接口
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}
  1. 服务类
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 saveUser(User user) {
        return userRepository.save(user);
    }

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

}

实现简单的增删查改操作

  1. 创建用户
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping("/users")
    public User createUser(@RequestBody User user) {
        return userService.saveUser(user);
    }

}
  1. 查询用户
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

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

}
  1. 更新用户
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @PutMapping("/users/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User user) {
        user.setId(id);
        return userService.saveUser(user);
    }

}
  1. 删除用户
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

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

}

测试API

使用Postman或浏览器测试API:

  1. 创建用户
{
    "name": "John Doe",
    "email": "john.doe@example.com"
}
  1. 查询用户
GET /users/1
  1. 更新用户
{
    "name": "John Doe Updated"
}
  1. 删除用户
DELETE /users/1
常见问题解答

常见错误及解决方法

  1. 应用程序无法启动

    • 检查application.propertiesapplication.yml配置文件中是否有错误。
    • 检查依赖是否正确引入。
    • 确保@SpringBootApplication注解使用正确。
  2. 无法访问控制器

    • 确保控制器类使用@RestController注解。
    • 检查控制器类是否包含@RequestMapping注解。
    • 检查控制器方法是否包含@GetMapping@PostMapping等注解。
  3. 数据访问问题
    • 检查数据库连接配置是否正确。
    • 确保实体类、仓库接口、服务类等配置正确。
    • 检查数据库是否已经启动。

Spring Boot调试技巧

  1. 使用Spring Boot Actuator

    • 添加spring-boot-starter-actuator依赖。
    • 访问/actuator端点查看应用的运行状态。
  2. 日志配置

    • application.propertiesapplication.yml中配置日志级别,如logging.level.root=DEBUG
    • 使用@Slf4j注解注入日志对象。
  3. 断点调试
    • 使用IDE的断点调试功能,设置断点,逐步执行代码。
    • 使用调试模式运行应用,如mvn spring-boot:run -Dspring-boot.run.jvmArguments="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"

如何打包和部署Spring Boot应用

  1. 打包应用

在IDE中,右键点击DemoApplication类,选择Run Maven installRun Gradle build打包应用。

mvn package

生成的打包文件位于target目录下,如demo-0.0.1-SNAPSHOT.jar

  1. 运行打包文件
java -jar target/demo-0.0.1-SNAPSHOT.jar
  1. 部署到云服务器

  2. 将打包文件上传到服务器。
  3. 使用java -jar demo-0.0.1-SNAPSHOT.jar命令运行应用。
  4. 配置服务器的防火墙,允许访问应用端口。

  5. 使用Docker部署

  6. 创建Dockerfile文件:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
  1. 构建Docker镜像:
docker build -t springboot-demo .
  1. 运行Docker镜像:
docker run -p 8080:8080 springboot-demo
0人推荐
随时随地看视频
慕课网APP