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

Spring Boot框架入门教程

标签:
SpringBoot
概述

Spring Boot框架是一种由Pivotal团队提供的基于Spring框架的轻量级开发工具,它简化了Spring应用的搭建和开发过程,能够快速构建独立的、生产级别的应用。Spring Boot通过提供自动配置、嵌入式Web服务器和起步依赖等功能,极大地提高了开发效率。该框架支持多种数据库访问技术,并内置了生产级别的监控功能。

Spring Boot框架简介
什么是Spring Boot

Spring Boot 是由 Pivotal 团队提供的基于Spring框架的轻量级开发框架。它旨在简化Spring应用的初始搭建以及开发过程,使得开发者可以直接使用Spring框架,而无需配置繁琐的XML和配置文件。Spring Boot 通过提供一系列开箱即用的特性,帮助开发者快速构建独立的、生产级别的基于Spring的应用程序。它支持嵌入式Web服务器(如Tomcat和Jetty)、自动配置、起步依赖等特性,极大地简化了开发流程。

Spring Boot的优势
  1. 自动配置:Spring Boot 通过约定优于配置的原则,自动配置Spring应用,减少了繁琐的手动配置工作。
  2. 起步依赖:提供了大量预定义的依赖配置,开发者只需添加一个依赖即可引入相应的库和配置。
  3. 嵌入式Web容器:支持内嵌式的Tomcat、Jetty和Undertow服务器,简化了部署步骤。
  4. Actuator监控:提供了生产级别的监控功能,帮助开发者了解应用的运行状态。
  5. 快速启动:简化了Spring应用的开发流程,使得开发和部署更加快速。
  6. 无代码生成和XML配置:最大限度地减少XML配置,并且使用注解配置,简化了应用的配置。
  7. 微服务支持:支持使用Spring Boot开发微服务,使开发者能够更容易地构建和部署微服务应用。
  8. 全面的文档:提供了丰富的文档和示例,使得开发者能够快速上手并掌握Spring Boot开发。
Spring Boot与传统Spring的区别
  • 配置方式:传统Spring框架需要大量XML配置文件或Java配置类,而Spring Boot通过约定优于配置的方式,自动配置应用。
  • 起步依赖:Spring Boot引入了起步依赖的概念,通过简单的Maven或Gradle依赖,即可引入一组预定义的依赖。
  • 嵌入式Web服务器:Spring Boot自带内嵌的Web服务器(如Tomcat、Jetty),无需额外部署。
  • 自动配置:Spring Boot能够自动配置许多常用功能,如数据源配置、Tomcat配置等。
  • 命令行接口:Spring Boot提供了命令行工具(CLI),支持快速创建应用项目。
  • 监控与健康检查.
    • Spring Boot自带Actuator模块,可以实现应用的健康检查、监控和服务端点。通过添加spring-boot-starter-actuator依赖,可以启用Actuator监控。
快速上手Spring Boot
创建第一个Spring Boot项目
  1. 选择一个合适的IDE,例如IntelliJ IDEA或Eclipse。
  2. 下载并安装Spring Boot CLI工具,或者使用Spring Initializr(在线工具或IDE插件)来快速创建项目。
  3. 使用Spring Initializr生成项目结构,选择对应的Spring Boot版本、构建工具(Maven或Gradle)和所需依赖(如Spring Web、Spring Data JPA)。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  1. 下载并导入生成的项目到IDE中。
mvn spring-boot:run
项目结构解析

Spring Boot 项目的典型目录结构如下:

src/
├── main/
│   ├── java/
│   │   └── com/
│   │       └── example/
│   │           └── demo/
│   │               ├── DemoApplication.java
│   │               └── controller/
│   │                   └── HelloController.java
│   ├── resources/
│   │   ├── application.properties
│   │   └── static/
│   │   └── templates/
│   │   └── application.yml
└── test/
    └── java/
        └── com/
            └── example/
                └── demo/
                    └── DemoApplicationTests.java
  • src/main/java:存放Java类,如主程序类和控制器类。
  • src/main/resources:存放资源文件,如配置文件和静态文件。
  • src/test/java:存放测试用例类。

主程序类

主程序类通常包含一个带有@SpringBootApplication注解的main方法,用于启动应用。

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

控制器类

控制器类处理HTTP请求,使用注解定义请求映射和处理逻辑。

package com.example.demo.controller;

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 Boot应用

启动Spring Boot应用可以通过IDE中的运行按钮,或者在命令行中运行。

mvn spring-boot:run

通过浏览器访问 http://localhost:8080/hello 即可看到输出 "Hello, Spring Boot!"。

Spring Boot基础配置
使用application.properties配置文件

application.properties 是Spring Boot默认的配置文件,可以在这里配置各种环境变量和系统属性。

server.port=8081
spring.application.name=demo-app
  1. server.port:设置应用的监听端口,默认为8080。
  2. spring.application.name:设置应用的名字。
使用YAML格式进行配置

除了application.properties,Spring Boot也支持使用application.yml进行配置。

server:
  port: 8081
spring:
  application:
  name: demo-app

YAML格式的配置文件更加简洁和易于阅读。

环境变量和系统属性的应用

可以通过环境变量或系统属性覆盖配置文件中的设置。

# application.properties
server.port=${PORT:8081}

在运行应用时,可以通过环境变量设置 PORT

PORT=8082 mvn spring-boot:run
Spring Boot依赖管理和自动配置
依赖管理简介

Spring Boot使用Maven或Gradle管理项目依赖。通过pom.xmlbuild.gradle文件添加依赖。

<!-- pom.xml -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
// build.gradle
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

Spring Boot的依赖管理通过起步依赖(Starter)实现,提供了预定义的依赖组合,使得开发更加便捷。

自动配置原理

Spring Boot的自动配置机制通过@Conditional注解(如@ConditionalOnMissingBean)和@Profile注解,根据应用的类路径和配置条件自动配置相应的组件。

例如,当项目中引入了spring-boot-starter-data-jpa依赖,Spring Boot会自动配置JPA和Hibernate。

开箱即用的自动配置

Spring Boot提供了大量的自动配置,使得开发者无需编写大量配置代码。例如,自动配置了Tomcat服务器、数据源、JPA等。

// 自动配置的Tomcat服务器
@Bean
public TomcatEmbeddedServletContainerFactory tomcatFactory() {
    return new TomcatEmbeddedServletContainerFactory();
}
Spring Boot常用功能介绍
MVC架构的支持

Spring Boot支持基于Spring MVC的Web开发,提供开箱即用的控制器支持。

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

控制器类中使用@RestController注解,表示该类中的方法直接返回数据,无需通过视图解析。

完整应用实例

完整应用实例如下:

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);
    }
}
package com.example.demo.controller;

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

通过浏览器访问 http://localhost:8080/hello 即可看到输出 "Hello, Spring Boot!"。

数据库访问与集成

Spring Boot支持多种数据库访问技术,包括JPA、MyBatis等。

<!-- pom.xml -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
    </dependency>
</dependencies>
@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    // getters and setters
}
public interface UserRepository extends JpaRepository<User, Long> {
}

通过添加spring-boot-starter-data-jpa依赖并引入数据源配置,即可使用JPA进行数据库访问。

完整数据库连接配置

数据库连接配置如下:

# application.properties
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

完整数据库操作代码

package com.example.demo.service;

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

import com.example.demo.repository.UserRepository;
import com.example.demo.entity.User;

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

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

    public User getUserById(Long id) {
        return userRepository.findById(id).orElse(null);
    }
}
日志管理

Spring Boot默认使用Java Util Logging作为内置的日志框架,同时支持其他日志框架,如Log4j和Logback。

# application.yml
logging:
  level:
    root: INFO
    com.example.demo: DEBUG

通过配置文件可以调整日志级别和输出设置。

进阶技巧
单元测试

Spring Boot提供了@SpringBootTest注解,用于启动完整的Spring Boot应用进行测试。

@SpringBootTest
public class DemoApplicationTests {
    @Test
    public void contextLoads() {
    }
}

完整单元测试代码

package com.example.demo;

import org.springframework.boot.test.context.SpringBootTest;
import org.junit.jupiter.api.Test;

@SpringBootTest
public class DemoApplicationTests {
    @Test
    public void contextLoads() throws Exception {
        // 测试逻辑
    }
}
Actuator监控

Spring Boot Actuator模块提供了生产级别的监控功能,可以通过HTTP接口访问应用的状态信息。

<!-- pom.xml -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

启用Actuator后,可以通过/actuator接口访问各种监控端点。

自定义starter

自定义starter可以帮助开发者将一套完整的依赖和配置打包成一个模块,方便他人引用。

// 自定义starter的pom.xml
<dependency>
    <groupId>com.example</groupId>
    <artifactId>my-starter</artifactId>
    <version>1.0.0</version>
</dependency>

自定义starter可以包含特定的依赖、配置类和自动配置类。

@Configuration
public class MyStarterAutoConfiguration {
    // 自动配置逻辑
}

通过自定义starter,可以将一组组件和配置打包在一起,方便项目中引入和使用。

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消