继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

SpringBoot入门指南:快速搭建你的第一个项目

莫回无
关注TA
已关注
手记 174
粉丝 3
获赞 2
概述

Spring Boot 是一个用于简化 Spring 应用开发的框架,它通过约定优于配置的方式,使得开发者可以快速搭建和运行独立的、生产级别的应用程序。Spring Boot 提供了自动配置、内置的嵌入式 Web 服务器和依赖管理等特性,简化了开发过程中的各项任务。

SpringBoot简介

什么是SpringBoot

Spring Boot 是一个用于简化 Spring 应用程序开发的框架。它允许开发者通过约定优于配置的方式快速构建独立的、生产级别的基于 Spring 框架的应用程序。Spring Boot 是对 Spring 框架的扩展和简化,它提供了一系列开箱即用的特性,使得开发者能够快速搭建和运行应用程序。

Spring Boot 不仅可以简化 Spring 应用的配置,还可以简化开发过程中的其他任务,例如依赖管理、打包发布等。Spring Boot 最主要的目标是简化 Spring 应用的初始搭建及开发过程,它通过约定优于配置的方式,使得项目配置更简单。

SpringBoot的优势

  1. 简化配置:通过约定优于配置的方式,Spring Boot 大大减少了开发者需要编写的配置代码。例如,数据库的配置只需要在 application.propertiesapplication.yml 文件中添加相关配置信息即可,无需大量 XML 配置。

  2. 自动配置:Spring Boot 可以自动配置 Spring 应用程序所需的许多常见组件。例如,自动配置数据库连接、JPA、邮件服务等。开发者只需要引入所需的依赖,Spring Boot 就会自动配置这些组件。

  3. 内置的嵌入式Web服务器:Spring Boot 包含了一个嵌入式的 Tomcat 或 Jetty Web 服务器,开发者无需手动配置 Web 服务器,只需在应用中运行即可。这使得开发、测试和部署变得非常简单。

  4. 快速启动:Spring Boot 提供了快速构建独立的、产品级别的应用的能力,使得应用能够快速启动和运行。尤其是在开发阶段,Spring Boot 的快速启动特性极大地提升了开发效率。

  5. 依赖管理和打包:Spring Boot 提供了一个自动化的依赖管理和打包工具,使得开发者能够专注于应用的逻辑开发,而不必担心底层的依赖管理和打包过程。

  6. 健康检查和监控:Spring Boot 提供了内置的健康检查和监控功能,可以帮助开发者更好地了解应用的运行状态和性能。

SpringBoot的适用场景

  1. 快速原型开发:Spring Boot 非常适合用于快速开发原型应用,它减少了繁琐的配置步骤,使得开发者能够快速构建和测试应用。

  2. 微服务开发:Spring Boot 与 Spring Cloud 结合,可以非常方便地开发基于微服务架构的应用。Spring Boot 的自动配置和嵌入式 Web 服务器特性,使得构建可独立部署的服务变得更加简单。

  3. 企业应用:Spring Boot 可以用于构建企业级应用。它的自动配置、依赖管理和打包特性,使得企业应用的开发和维护变得更加简单和高效。

  4. 教学和学习:Spring Boot 的简单易用性使其非常适合用于教学和学习。通过 Spring Boot,初学者可以快速搭建并运行一个完整的 Spring 应用,从而更好地理解和掌握 Spring 框架。

  5. 简化现有应用的升级:如果现有的 Spring 应用需要升级到新的版本或需要添加新的功能,Spring Boot 可以简化这一过程。它可以提供更简单、更现代的方式来构建和维护这些应用。
开发环境搭建

安装Java开发环境

要开始使用 Spring Boot,首先需要安装 Java 开发环境。请确保您的系统已安装 Java Development Kit (JDK),版本为 Java 8 或更高版本。推荐使用以下命令检查 Java 安装情况:

java -version

如果未安装 Java,可以从 Oracle 官方网站或 OpenJDK 下载并安装 JDK。安装完成后,确保环境变量已正确配置。可以通过以下命令检查环境变量是否配置正确:

echo $JAVA_HOME

下载SpringBoot starter项目

Spring Boot 提供了一个在线工具 Spring Initializr,用于快速生成项目模板。您可以访问 Spring Initializr 官方网站(https://start.spring.io/)来创建新项目。通过 Spring Initializr,您可以选择项目的基本信息(如项目名称、语言、依赖等),然后下载生成的项目模板。

例如,创建一个简单的 Spring Boot Web 应用,选择以下选项:

  • Project: Maven Project
  • Language: Java
  • Spring Boot: 选择最新版本
  • Dependencies: Web

点击 "Generate" 按钮,下载生成的项目压缩包。解压后,您将看到一个包含项目结构的目录,其中包含 pom.xml 文件和其他必要的项目文件。

配置IDE集成SpringBoot

Spring Boot 项目可以使用多种 IDE 进行开发,包括 IntelliJ IDEA、Eclipse 和 Spring Tool Suite(STS)。以下是如何配置 IntelliJ IDEA 操作环境:

  1. 导入 Maven 项目

    1. 打开 IntelliJ IDEA,选择 "File" -> "Open",然后浏览并选择解压后的项目目录。

    2. 确保 IntelliJ IDEA 可以识别 pom.xml 文件,如果未自动识别,可以手动选择 "File" -> "Open...",然后选择 pom.xml 文件。
  2. 配置 Maven 插件

    1. 在 IntelliJ IDEA 中,打开 "File" -> "Settings"(或者按 Ctrl + Alt + S)。

    2. 选择 "Build, Execution, Deployment" -> "Build Tools" -> "Maven"。

    3. 确保 Maven 安装路径正确,并且勾选了 "Import Maven projects automatically"。

      示例 pom.xml 配置:

      <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
      </build>
  3. 启动 Spring Boot 应用

    1. 在 IntelliJ IDEA 中,找到 Application 类,通常是 DemoApplication.java

    2. 右键点击该类,选择 "Run",或者直接在代码中运行主方法。

导入项目到IDE

  1. 导入 Maven 项目

    使用 IntelliJ IDEA 导入 Maven 项目,可以选择 "File" -> "Open",或者 "Import Project",然后浏览并选择解压后的项目目录。确保 IntelliJ IDEA 能够正确识别 pom.xml 文件。

  2. 配置 Maven 插件

    打开 "File" -> "Settings",选择 "Build, Execution, Deployment" -> "Build Tools" -> "Maven",确保 Maven 安装路径正确,并且勾选了 "Import Maven projects automatically"。

  3. 启动 Spring Boot 应用

    找到 Application 类,通常是 DemoApplication.java,右键点击该类,选择 "Run",或者直接在代码中运行主方法。

  4. 调试项目

    在 IntelliJ IDEA 中,可以通过设置断点来调试项目。打开 DemoApplication.java 文件,在 main 方法中设置断点,然后右键点击该方法,选择 "Debug"。

运行首个SpringBoot应用

在 IntelliJ IDEA 中,找到 DemoApplication.java 文件,并运行主方法。例如,您可以通过以下步骤运行应用:

  1. 打开 DemoApplication.java 文件。
  2. main 方法中设置断点。
  3. 右键点击 main 方法,选择 "Run"。

运行后,您将在控制台看到应用启动信息,例如:

2023-10-01 10:00:00.000  INFO 12345 --- [main] com.example.demo.DemoApplication         : Started DemoApplication in 3.452 seconds (JVM running for 4.031)

此时,您的 Spring Boot 应用已经成功启动,并且可以通过浏览器访问 http://localhost:8080

创建第一个SpringBoot项目

使用Spring Initializr创建项目

使用 Spring Initializr 创建一个新的 Spring Boot 项目,您可以访问 https://start.spring.io。选择以下选项

  • Project: Maven Project
  • Language: Java
  • Spring Boot: 选择最新版本
  • Dependencies: Web

点击 "Generate",下载生成的项目压缩包。解压后,您将看到一个包含项目结构的目录,其中包含 pom.xml 文件和其他必要的项目文件。

导入项目到IDE

使用 IntelliJ IDEA 导入 Maven 项目,可以选择 "File" -> "Open",或者 "Import Project",然后浏览并选择解压后的项目目录。确保 IntelliJ IDEA 能够正确识别 pom.xml 文件。

创建Controller

在 Spring Boot 中,可以使用 @RestController 注解创建 RESTful API 控制器。@RestController@Controller@ResponseBody 的组合,简化了 RESTful 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")
public class MyController {

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

测试API

可以通过多种方式测试 RESTful API,例如使用浏览器、Postman 或编写单元测试。以下是一个简单的单元测试示例,使用 Spring Boot 提供的 MockMvc 来测试 RESTful API:

package com.example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

@WebMvcTest(MyController.class)
public class MyControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void testGetHello() throws Exception {
        mockMvc.perform(get("/api/hello"))
               .andExpect(status().isOk())
               .andExpect(content().string("Hello, World!"));
    }
}
SpringBoot核心概念和组件

自动配置

Spring Boot 通过 @SpringBootApplication 注解实现了自动配置。这个注解包含了 @Configuration@EnableAutoConfiguration@ComponentScan 三个注解的功能。以下是这些注解的详细说明:

  • @Configuration:表示当前类是一个配置类,类似于 Spring XML 配置文件。
  • @EnableAutoConfiguration:启用自动配置,根据类路径中的依赖关系和配置文件,自动配置 Spring 应用程序。
  • @ComponentScan:扫描指定包下的所有组件(如 @Controller@Service@Repository 等)并注册到 Spring 容器中。

例如,您可以使用以下代码创建一个简单的 Spring Boot 应用:

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

Starter依赖

Spring Boot Starter 依赖是 Spring Boot 为常见场景提供的预配置依赖集合。例如,spring-boot-starter-web 是一个包含所有 Web 开发所需组件的依赖集合,包括 Spring MVC、Tomcat 等。

以下是一个简单的 pom.xml 文件,展示了如何引入 spring-boot-starter-web 依赖:

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

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.13</version>
    </parent>

    <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>
        </build>
</project>

配置文件详解

Spring Boot 支持多种配置文件格式,包括 application.propertiesapplication.yml。以下是一些常见的配置示例:

application.properties

# 配置端口
server.port=8080

# 配置数据库
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

# 配置日志
logging.level.root=INFO

application.yml

server:
  port: 8080

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

logging:
  level:
    root: INFO
构建RESTful API

创建Controller

在 Spring Boot 中,可以使用 @RestController 注解创建 RESTful API 控制器。@RestController@Controller@ResponseBody 的组合,简化了 RESTful 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")
public class MyController {

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

使用Spring MVC

Spring Boot 基于 Spring MVC 框架提供了 RESTful API 的支持。Spring MVC 是一个强大的 MVC 框架,可以处理 HTTP 请求和响应。以下是一个更复杂的 RESTful API 控制器示例,展示了如何处理 CRUD 操作:

package com.example.demo;

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

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/api")
public class MyController {

    private List<String> todos = new ArrayList<>();

    @GetMapping("/todos")
    public List<String> getTodos() {
        return todos;
    }

    @PostMapping("/todos")
    public void addTodo(@RequestParam String todo) {
        todos.add(todo);
    }

    @DeleteMapping("/todos/{id}")
    public void deleteTodo(@PathVariable int id) {
        todos.remove(id);
    }

    @PutMapping("/todos/{id}")
    public void updateTodo(@PathVariable int id, @RequestParam String newTodo) {
        todos.set(id, newTodo);
    }
}

测试API

可以通过多种方式测试 RESTful API,例如使用浏览器、Postman 或编写单元测试。以下是一个简单的单元测试示例,使用 Spring Boot 提供的 MockMvc 来测试 RESTful API:

package com.example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

@WebMvcTest(MyController.class)
public class MyControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void testGetTodos() throws Exception {
        mockMvc.perform(get("/api/todos"))
               .andExpect(status().isOk())
               .andExpect(content().string("[]"));
    }

    @Test
    public void testAddTodo() throws Exception {
        mockMvc.perform(post("/api/todos").param("todo", "Learn Spring Boot"))
               .andExpect(status().isOk());
    }

    @Test
    public void testDeleteTodo() throws Exception {
        mockMvc.perform(post("/api/todos").param("todo", "Learn Spring Boot"))
               .andExpect(status().isOk());

        mockMvc.perform(delete("/api/todos/0"))
               .andExpect(status().isOk());
    }
}
部署SpringBoot应用

打包SpringBoot应用

Spring Boot 提供了一个内置的 Maven 插件 spring-boot-maven-plugin,用于将应用打包成可执行的 JAR 文件。以下是如何使用 Maven 打包 Spring Boot 应用:

  1. 使用 Maven 打包

    在 IntelliJ IDEA 中,可以通过 Maven 插件运行 mvn clean package 命令来打包应用。例如:

    mvn clean package

    这将生成一个 target 目录下的 *.jar 文件,例如 demo-0.0.1-SNAPSHOT.jar

  2. 运行打包的 JAR 文件

    可以通过以下命令运行打包好的 JAR 文件:

    java -jar target/demo-0.0.1-SNAPSHOT.jar

在Tomcat上部署

  1. 将 JAR 文件部署到 Tomcat

    如果您希望将 Spring Boot 应用部署到外部的 Tomcat 服务器,可以将应用打包为 WAR 文件。首先,需要将 spring-boot-starter-web 替换为 spring-boot-starter-tomcat,并将项目结构修改为标准的 WAR 结构。

    修改 pom.xml

    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-tomcat</artifactId>
       <scope>provided</scope>
    </dependency>

    然后,将项目结构改为标准的 WAR 结构:

    package com.example.demo;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
    
    @SpringBootApplication
    public class DemoApplication extends SpringBootServletInitializer {
    
       public static void main(String[] args) {
           SpringApplication.run(DemoApplication.class, args);
       }
    }
  2. 打包为 WAR 文件

    使用 Maven 打包为 WAR 文件:

    mvn clean package
  3. 部署到 Tomcat

    将生成的 WAR 文件复制到 Tomcat 的 webapps 目录,Tomcat 会自动部署应用。

使用Docker部署

  1. 编写 Dockerfile

    在项目根目录下创建一个 Dockerfile 文件,用于描述如何构建 Docker 镜像。例如:

    FROM openjdk:8-jdk-alpine
    COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
    ENTRYPOINT ["java", "-jar", "/app.jar"]
  2. 构建 Docker 镜像

    使用以下命令构建 Docker 镜像:

    docker build -t demo:latest .
  3. 运行 Docker 镜像

    使用以下命令运行 Docker 镜像:

    docker run -p 8080:8080 demo:latest
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP