Spring Boot 介绍与应用

什么是 Spring Boot?

Spring Boot 是一个用于简化 Spring 应用程序开发和部署的框架,它建立在 Spring 框架的基础之上,但去除了繁琐的配置。Spring Boot 采用"约定优于配置"的原则,默认启用了大量自动配置,使得开发者无需手动配置复杂的 XML 配置文件或 Java 配置类,从而加速了开发过程。

Spring Boot 是为了简化 Spring 应用的创建和部署,特别适用于微服务架构。在 Spring Boot 中,开发者只需关注核心业务逻辑,其他基础设施(如 Web 服务器、数据库连接等)都由 Spring Boot 自动配置。

Spring Boot 的特点

  1. 快速开发:通过自动配置和起步依赖(starters),Spring Boot 提供了几乎开箱即用的开发环境。
  2. 独立运行:Spring Boot 提供了内嵌的 Web 服务器(如 Tomcat、Jetty 或 Undertow),不需要外部的 Web 服务器支持,应用可以直接以独立的方式运行。
  3. 简化配置:Spring Boot 通过约定配置大大简化了 Spring 应用程序的配置,不再需要复杂的 XML 配置文件。
  4. 生产级特性:Spring Boot 内置了许多生产级特性,如健康检查、指标监控、外部化配置、日志管理等,方便部署和运维。
  5. 微服务支持:Spring Boot 与 Spring Cloud 配合使用,能够非常方便地构建微服务架构,提供了服务发现、负载均衡、断路器等功能。

Spring Boot 项目结构

一个简单的 Spring Boot 项目通常包含以下几个关键部分:

  • 主类(Main Application Class) :该类包含 @SpringBootApplication 注解,是 Spring Boot 应用的入口。
  • 控制器类(Controller):处理 HTTP 请求的控制器类。
  • 配置文件(application.properties 或 application.yml):用于配置应用程序的参数。
  • 静态资源 :如 index.htmlcssjs 等,Spring Boot 默认支持静态资源。
  • 模板引擎:如 Thymeleaf 用于渲染动态页面(如果是 Web 应用的话)。

Spring Boot 示例:创建一个 RESTful API

1. 创建一个 Spring Boot 项目

可以通过 Spring Initializr(https://start.spring.io)创建一个基本的 Spring Boot 项目。选择以下依赖:

  • Spring Web:用于构建 RESTful Web 服务。
  • Spring Boot DevTools:提供热部署,简化开发过程。

选择完毕后,点击生成项目并下载压缩包,解压后使用 IDE(如 IntelliJ IDEA 或 Eclipse)导入项目。

2. 项目结构

在创建的 Spring Boot 项目中,你会看到以下文件结构:

复制代码
my-spring-boot-app
├── src
│   └── main
│       ├── java
│       │   └── com
│       │       └── example
│       │           └── demo
│       │               ├── DemoApplication.java
│       │               └── controller
│       │                   └── UserController.java
│       └── resources
│           └── application.properties
└── pom.xml

3. 编写 Controller 类

创建一个控制器类 UserController,用于处理用户相关的请求:

复制代码
package com.example.demo.controller;

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 String getUsers() {
        return "List of users";
    }
}
  • @RestController:表示该类是一个 RESTful 控制器,处理 HTTP 请求并返回响应。
  • @RequestMapping("/api/users"):定义请求路径前缀。
  • @GetMapping:处理 GET 请求,返回一个简单的字符串。

4. 创建主类

创建主类 DemoApplication,并启动 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);
    }
}
  • @SpringBootApplication:标记主应用程序类,启用 Spring Boot 的自动配置、组件扫描等功能。
  • SpringApplication.run():启动应用程序。

5. 配置文件

src/main/resources/application.properties 中,你可以配置 Spring Boot 应用的一些参数。例如,设置端口号:

复制代码
server.port=8080

6. 运行 Spring Boot 应用

通过 IDE 直接运行 DemoApplication 类,或者使用 Maven 命令行运行:

复制代码
mvn spring-boot:run

Spring Boot 会自动启动一个嵌入式的 Tomcat 服务器,并监听 8080 端口。

7. 测试应用

打开浏览器或 Postman,访问 http://localhost:8080/api/users,你会看到如下响应:

复制代码
List of users

Spring Boot 自动配置

Spring Boot 的自动配置是它的一大特点。它会根据应用的依赖自动配置应用程序。例如,如果你的应用引入了 spring-boot-starter-data-jpa,Spring Boot 会自动配置数据源、JPA 实体管理器等。

示例:使用自动配置连接数据库

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

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

  2. 创建实体类 :创建一个 User 实体类:

    package com.example.demo.entity;

    import javax.persistence.Entity;
    import javax.persistence.Id;

    @Entity
    public class User {

    复制代码
     @Id
     private Long id;
     private String name;
    
     // Getters and Setters

    }

  3. 创建 JPA Repository

    package com.example.demo.repository;

    import com.example.demo.entity.User;
    import org.springframework.data.jpa.repository.JpaRepository;

    public interface UserRepository extends JpaRepository<User, Long> {
    // JPA 自动实现查询方法
    }

  4. 使用 Repository

    package com.example.demo.controller;

    import com.example.demo.entity.User;
    import com.example.demo.repository.UserRepository;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    import java.util.List;

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

    复制代码
     @Autowired
     private UserRepository userRepository;
    
     @GetMapping
     public List<User> getAllUsers() {
         return userRepository.findAll();
     }

    }

Spring Boot 会自动配置 DataSourceEntityManagerFactory,并使用 JPA 实现数据的增、查、改、删功能。

生产级特性

Spring Boot 提供了一些非常有用的生产级特性:

  1. 健康检查 :使用 /actuator/health 端点查看应用的健康状况。
  2. 外部化配置 :可以将配置参数放在 application.propertiesapplication.yml 文件中,也支持从环境变量或命令行参数加载配置。
  3. 性能监控:通过 Actuator 提供的指标,可以监控应用的性能,如内存使用、线程池状态等。

结语

Spring Boot 通过提供开箱即用的功能和自动配置,极大地简化了开发过程。它让开发者专注于业务逻辑,而不必关心基础设施的配置。无论是构建传统的单体应用,还是构建微服务架构,Spring Boot 都是一个非常理想的选择。如果你是 Java 开发者,Spring Boot 会是你提高开发效率的重要工具。

相关推荐
小白杨树树几秒前
【SSM】SpringMVC学习笔记8:拦截器
java·开发语言
艾露z2 分钟前
深度解析Mysql中MVCC的工作机制
java·数据库·后端·mysql
冷心笑看丽美人3 分钟前
Spring MVC 之 异常处理
java·开发语言·java-ee·spring mvc
神仙别闹4 分钟前
基于Java(SpringBoot、Mybatis、SpringMvc)+MySQL实现(Web)小二结账系统
java·spring boot·mybatis
超级小忍4 分钟前
Java集合中Stream流的使用
java·开发语言
前端付豪12 分钟前
揭秘网易统一日志采集与故障定位平台揭秘:如何在亿级请求中1分钟定位线上异常
前端·后端·架构
陈随易29 分钟前
Lodash 杀手来了!es-toolkit v1.39.0 已完全兼容4年未更新的 Lodash
前端·后端·程序员
趁你还年轻_33 分钟前
Spring 官方推荐构造函数注入
java·spring·log4j
全职计算机毕业设计40 分钟前
SpringBoot+Mysql实现的停车场收费小程序系统+文档
spring boot·mysql·小程序