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

Springboot框架学习:入门到简单实战教程

标签:
SpringBoot
概述

Spring Boot框架学习涵盖了从快速搭建项目到开发RESTful API、集成数据库和使用模板引擎等多个方面,详细介绍如何使用Spring Boot进行Web应用开发。文章还提供了详细的开发环境搭建指南,包括Java环境配置和IDE设置,帮助读者快速入门Spring Boot框架。

Spring Boot简介

Spring Boot是什么

Spring Boot 是一个用来简化新Spring应用初始搭建以及开发过程的框架,通过约定优于配置的方式,减少开发人员对Spring框架本身API的繁琐配置。Spring Boot可以帮助开发者快速搭建项目,并通过自动配置的方式使开发者能够专注于业务逻辑的实现。

Spring Boot的优势

  1. 快速启动项目:通过约定优于配置的方式,开发人员可以快速启动一个Spring项目,无需过多配置。
  2. 自动配置:能够自动配置应用所需的资源,如数据库连接、缓存、邮件服务等,减少开发人员的工作量。
  3. 无依赖冲突:依赖管理通过Maven或Gradle来完成,避免不同版本之间的冲突。
  4. 独立运行:Spring Boot应用可以独立运行,内置了Tomcat、Jetty等Web服务器,使得应用不需要部署到外部的Web服务器上。
  5. 易于测试:易于单元测试和集成测试,支持多种测试框架。

Spring Boot的应用场景

Spring Boot适用于需要快速开发和部署的项目,特别是以下场景:

  1. Web应用:开发Web应用时,Spring Boot可以快速集成多种Web框架,如Spring MVC、Spring WebFlux等。
  2. 微服务开发:在微服务开发中,Spring Boot可以和其他微服务框架(如Spring Cloud、Netflix OSS等)无缝集成。
  3. 数据处理:处理大量数据时,Spring Boot可以集成多种数据库和缓存技术,如JPA、MyBatis、Redis等。
  4. API开发:开发RESTful API时,Spring Boot提供了丰富的功能支持,如Spring Data REST、Spring WebFlux。
开发环境搭建

下载并安装Java开发环境

  1. 访问JDK官方网站(https://www.oracle.com/java/technologies/javase-jdk11-downloads.html)下载适合的操作系统版本的JDK
  2. 安装JDK时,请确保安装路径中没有特殊字符或空格,安装完成后,配置环境变量JAVA_HOMEPATH
  3. 检查Java安装是否成功,可以在命令行中输入java -version来查看安装的Java版本。

配置IDE(如IntelliJ IDEA、Eclipse)

IntelliJ IDEA

  1. 下载并安装IntelliJ IDEA社区版(https://www.jetbrains.com/idea/download/)。
  2. 打开IntelliJ IDEA,选择File -> New -> Project创建一个新的项目。
  3. 选择Spring Initializr,选择对应的Java版本和Spring Boot版本,填写项目名称和包名,点击Next -> Finish完成项目创建。

Eclipse

  1. 下载并安装Eclipse(https://www.eclipse.org/downloads/)。
  2. 安装完成后,打开Eclipse,通过Help -> Eclipse Marketplace安装Spring Tools 4插件。
  3. 安装完成后,重启Eclipse,选择File -> New -> Spring Starter Project创建一个新的项目。

下载并配置Spring Boot开发工具

Maven

  1. 访问Maven官方网站(https://maven.apache.org/)下载Maven
  2. 解压下载的文件,配置环境变量MAVEN_HOMEPATH,确保命令行中可以运行mvn命令。
  3. 在IDE中配置Maven,将Maven的bin目录添加到IDE的构建路径中。

Gradle

  1. 访问Gradle官方网站(https://gradle.org/)下载Gradle
  2. 解压下载的文件,配置环境变量GRADLE_HOMEPATH,确保命令行中可以运行gradle命令。
  3. 在IDE中配置Gradle,将Gradle的bin目录添加到IDE的构建路径中。

使用Spring Boot CLI

  1. 访问Spring Boot CLI官方网站(https://spring.io/tools/cli)下载适合的操作系统版本的Spring Boot CLI。
  2. 解压下载的文件,配置环境变量SPRING_BOOT_CLI_HOMEPATH,确保命令行中可以运行spring命令。
第一个Spring Boot应用

创建Spring Boot项目

使用Spring Initializr快速创建一个Spring Boot项目。

  1. 访问Spring Initializr网站(https://start.spring.io/)。
  2. 选择项目类型为Maven Project,语言为Java,依赖为Spring Web
  3. 填写项目名称为hello-spring-boot,包名com.example,其他默认配置。
  4. 点击Generate下载项目压缩包。
  5. 解压压缩包,导入到IDE中,如果是Eclipse,直接解压文件夹,如果是IntelliJ IDEA,使用File -> New -> Project from Existing Sources导入。
# 命令行创建项目示例
spring init --dependencies=web,thymeleaf --groupId=com.example --artifactId=hello-spring-boot --version=0.0.1-SNAPSHOT

项目结构介绍

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

hello-spring-boot
│   .gitignore
│   pom.xml
│   src\
│   │   main\
│   │   │   java\
│   │   │   │   com\
│   │   │   │   │   example\
│   │   │   │   │   │   HelloSpringBootApplication.java
│   │   │   │   │   │   HelloController.java
│   │   │   │   │   │
│   │   │   │   │   application.properties
│   │   │   │   │   application.yml
│   │   │   │   │
│   │   │   │   resources\
│   │   │   │   │   static\
│   │   │   │   │   templates\
│   │   │   │   │   application.yml
│   │   │   │   │
│   │   │   │   META-INF\
│   │   │   │   │   spring.factories
│   │   │   │
│   │   │   test\
│   │   │   │   java\
│   │   │   │   │   com\
│   │   │   │   │   │   example\
│   │   │   │   │   │   HelloSpringBootApplicationTests.java
  • src/main/java/com/example/HelloSpringBootApplication.java:主入口类,使用@SpringBootApplication注解,启动整个Spring Boot应用。
  • src/main/java/com/example/HelloController.java:控制器类,处理HTTP请求。
  • src/main/resources/application.propertiesapplication.yml:配置文件。
  • src/main/resources/static:静态资源文件,如JS、CSS、图片等。
  • src/main/resources/templates:模板文件,如Thymeleaf模板。
  • src/test/java/com/example/HelloSpringBootApplicationTests.java:单元测试文件。

运行第一个Spring Boot项目

  1. 在IDE中运行项目,如果使用IntelliJ IDEA,直接右键HelloSpringBootApplication.java,选择Run
  2. 项目运行后,打开浏览器,访问http://localhost:8080/hello,可以看到项目返回的响应信息。

HelloController.java中添加以下代码:

package com.example;

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

HelloSpringBootApplication.java中添加以下代码:

package com.example;

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

@SpringBootApplication
public class HelloSpringBootApplication {

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

打开浏览器,访问http://localhost:8080/hello,可以看到返回的字符串Hello Spring Boot!

Spring Boot核心配置

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

Spring Boot支持两种配置文件格式:application.propertiesapplication.yml。这两种文件用于定义应用程序的配置,如数据库连接、服务器端口等。

application.properties

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

server.port=8080
server.tomcat.allow-upgrade=false

application.yml

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

server:
  port: 8080
  tomcat:
    allow-upgrade: false

常用配置项讲解

  1. Spring Boot应用配置项

    • spring.application.name:指定应用名称。
    • spring.profiles.active:指定活动的配置文件。
    • spring.main.banner-mode:控制启动时显示的Banner。
  2. Web服务器配置项

    • server.port:指定应用启动的端口号。
    • server.tomcat.max-threads:指定Tomcat的最大线程数。
    • server.tomcat.uri-encoding:设置Tomcat的URI编码。
  3. 数据源配置项
    • spring.datasource.url:数据源的JDBC URL。
    • spring.datasource.username:数据库用户名。
    • spring.datasource.password:数据库密码。
    • spring.datasource.driver-class-name:数据库驱动类名。

自动配置原理简介

Spring Boot的自动配置机制通过@SpringBootApplication注解中的@EnableAutoConfiguration启用。@EnableAutoConfiguration会扫描类路径下的配置文件,根据配置文件中的信息查找匹配的配置类,从而完成自动配置。Spring Boot通过SpringFactoriesLoader加载spring.factories文件中的配置类,这些配置类会根据特定的配置项自动配置Spring容器中的Bean。

Spring Boot基础功能实战

RESTful API的创建与测试

使用Spring Boot可以很容易地创建RESTful API。下面是一个简单的示例,创建一个RESTful API用于查询用户信息。

  1. 创建一个新的控制器类UserController.java,用于处理HTTP请求。
package com.example;

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

import java.util.Arrays;
import java.util.List;

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

    private List<User> users = Arrays.asList(
            new User(1, "张三", "zhangsan@example.com"),
            new User(2, "李四", "lisi@example.com")
    );

    @GetMapping
    public List<User> getUsers() {
        return users;
    }
}

class User {
    private int id;
    private String name;
    private String email;

    public User(int id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getEmail() {
        return email;
    }
}
  1. HelloSpringBootApplication.java中添加UserController类的扫描路径。
package com.example;

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

@SpringBootApplication
public class HelloSpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloSpringBootApplication.class, args);
    }
}
  1. 运行项目,访问http://localhost:8080/users,可以看到返回的用户列表。

数据库集成(如使用JPA和Spring Data JPA)

使用Spring Data JPA可以快速实现数据库的持久化操作,下面通过一个简单的示例演示如何使用JPA和Spring Data JPA。

  1. pom.xmlbuild.gradle中添加JPA和MySQL的依赖。

pom.xml

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

build.gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'mysql:mysql-connector-java'
}
  1. 配置数据库连接信息。

application.properties

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

spring.jpa.hibernate.ddl-auto=update
  1. 创建一个实体类User.java,使用@Entity注解标记为实体类。
package com.example;

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;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}
  1. 创建一个持久化层接口UserService.java,使用@Repository注解标记为数据访问层。
package com.example;

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

public interface UserService extends JpaRepository<User, Long> {
}
  1. 创建一个控制器UserController.java,使用UserService接口进行数据操作。
package com.example;

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("/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> getUsers() {
        return userService.findAll();
    }
}
  1. 运行项目,访问http://localhost:8080/users,可以看到返回的用户列表。

Thymeleaf模板引擎的使用

Thymeleaf是一个Java服务器端模板引擎,可以用于生成HTML、XML、JavaScript等静态文件。下面通过一个简单的示例演示如何使用Thymeleaf。

  1. pom.xmlbuild.gradle中添加Thymeleaf的依赖。

pom.xml

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

build.gradle

implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
  1. src/main/resources/templates目录下创建一个HTML模板文件index.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Thymeleaf Example</title>
</head>
<body>
    <h1 th:text="'Hello, ' + ${name}">Hello, World</h1>
</body>
</html>
  1. 创建一个控制器HomeController.java,将模板文件渲染为HTML响应。
package com.example;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping("/")
    public String home(Model model) {
        model.addAttribute("name", "Spring Boot Thymeleaf");
        return "index";
    }
}
  1. 运行项目,访问http://localhost:8080/,可以看到渲染的HTML页面。
测试与部署

单元测试与集成测试

Spring Boot支持使用JUnit 5、Mockito等工具进行单元测试和集成测试。

  1. 添加测试依赖。

pom.xml

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

build.gradle

dependencies {
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
  1. 创建一个单元测试类UserControllerTests.java
package com.example;

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.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;

@WebMvcTest(UserController.class)
public class UserControllerTests {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void shouldReturnDefaultMessage() throws Exception {
        mockMvc.perform(get("/users"))
                .andExpect(status().isOk())
                .andExpect(content().string("[" +
                        "{" +
                        "\"id\":1," +
                        "\"name\":\"张三\"," +
                        "\"email\":\"zhangsan@example.com\"" +
                        "}," +
                        "{" +
                        "\"id\":2," +
                        "\"name\":\"李四\"," +
                        "\"email\":\"lisi@example.com\"" +
                        "}" +
                        "]"));
    }
}
  1. 运行测试类,确保所有测试用例通过。

应用打包与发布

使用Maven或Gradle可以将应用打包成一个可执行的JAR文件,然后可以通过命令行运行。

Maven

mvn clean package

Gradle

./gradlew clean bootJar

执行上述命令后,可以在targetbuild/libs目录下找到生成的JAR文件。执行下面的命令运行JAR文件:

java -jar target/hello-spring-boot-0.0.1-SNAPSHOT.jar

部署到Tomcat或外部服务器

将打包好的JAR文件部署到Tomcat或其他外部服务器上。

  1. 使用Tomcat部署

    1.1. 将JAR文件复制到Tomcat的webapps目录下。

    1.2. 启动Tomcat。

  2. 使用外部服务器部署

    2.1. 将JAR文件复制到外部服务器的指定目录下。

    2.2. 使用外部服务器管理工具启动JAR文件。

例如,如果部署到Linux服务器,可以使用下面的命令启动JAR文件:

nohup java -jar /path/to/hello-spring-boot-0.0.1-SNAPSHOT.jar > /path/to/logfile.log 2>&1 &

这样可以将应用部署到外部服务器,并通过外部服务器管理工具监控应用的状态。

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
8
获赞与收藏
25

关注作者,订阅最新文章

阅读免费教程

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消