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

Spring Boot入门教程:从零开始搭建你的第一个Spring Boot项目

慕森王
关注TA
已关注
手记 442
粉丝 108
获赞 552
概述

Spring Boot 是一个基于Spring平台的框架,旨在简化应用的初始搭建和配置过程。它通过约定优于配置的原则,帮助开发者快速搭建功能全面的Spring应用,减少了传统Spring应用所需的XML配置和样板代码。Spring Boot集成了大量开箱即用的库,支持各种常用的功能,如Web开发、数据库访问、安全性、缓存等。

Spring Boot简介

什么是Spring Boot

Spring Boot 是由Pivotal团队提供的一个基于Spring平台的框架,旨在简化Spring应用的初始搭建和配置过程。它通过约定优于配置的原则,帮助开发者快速搭建功能全面的Spring应用,减少了传统Spring应用所需的XML配置和样板代码。

Spring Boot集成了大量开箱即用的库,支持各种常用的功能,如Web开发、数据库访问、安全性、缓存等。通过Spring Boot,开发者可以专注于业务逻辑的实现,而不需要花费大量时间在应用的基础设施配置上。

Spring Boot的优势

  1. 快速启动:Spring Boot通过约定优于配置的原则,使得开发人员可以快速搭建一个基础的Spring应用,从而极大地提高了开发效率。
  2. 自动配置:Spring Boot能够自动配置大部分常见的应用场景,如Web服务、数据库访问等,使得开发者无需手动配置这些基础设置。
  3. 嵌入式Servlet容器:Spring Boot集成了Tomcat、Jetty或Undertow等Servlet容器,可以轻松地通过mvn spring-boot:rungradle bootRun命令启动应用。
  4. 无代码生成和依赖管理:Spring Boot提供了Spring Boot Starters,这些Starter帮助开发者自动管理依赖关系,减少重复代码生成的工作。
  5. 生产就绪特性:包括使用Actuator监控应用状态、配置外部化等特性,使得应用更容易在生产环境中部署和维护。

Spring Boot与Spring的区别

  • Spring:Spring框架主要关注于提供一个全面的、轻量级的企业级应用开发框架。它包含了大量的核心组件,如IoC容器、AOP、MVC框架等,同时也支持其他扩展组件的集成。
  • Spring Boot:Spring Boot建立在Spring之上,提供了一套完整的解决方案来简化Spring应用的开发和配置。它简化了应用的启动过程,并且增加了许多生产特性,如监控、健康检查等。
  • 配置复杂度:Spring本身需要大量手动配置,而Spring Boot通过约定优于配置的原则极大地简化了这一过程。
  • 自动化配置:Spring Boot提供了大量的自动化配置选项,减少了开发者配置应用的时间,而Spring没有提供类似的自动化配置功能。

环境搭建

安装Java开发环境

为了开始使用Spring Boot,首先需要安装Java开发环境。建议使用Java 8或更高版本。以下是安装Java环境的步骤:

  1. 下载Java开发工具包(JDK)的最新版本。访问Oracle官方网站或OpenJDK官方网站获取安装包。
  2. 安装JDK,并确保安装成功后,Java环境变量已正确配置。可以通过在命令行中运行java -version来验证安装是否成功。
  3. 安装完成后,可以使用java -version命令来验证Java版本。

下载并配置Spring Boot Starter

Spring Boot Starter是Spring Boot的核心概念之一,它主要通过引入预定义的依赖来简化开发过程。具体步骤如下:

  1. 下载并安装Maven或Gradle构建工具。这里以Maven为例,假设你已经安装了Maven。
  2. 创建一个新的Maven项目,并在pom.xml中添加Spring Boot Starter的相关依赖。例如,使用Spring Web Starter可以快速搭建Web应用。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.5.4</version>
    </dependency>
</dependencies>

创建第一个Spring Boot项目

使用Spring Initializr可以快速创建一个Spring Boot项目。以下是使用Spring Initializr创建项目的步骤:

  1. 访问Spring Initializr官网:https://start.spring.io/
  2. 选择项目信息,如项目语言、依赖等。例如,选择Java语言和Spring Web Starter作为项目依赖。
  3. 下载生成的项目压缩包,解压后即可得到一个完整的Spring Boot项目结构。

基本概念和术语

Spring Boot Starter

Spring Boot Starter是一个预定义的依赖集合,用于快速搭建特定类型的Spring Boot应用。例如,spring-boot-starter-web用于创建Web应用,spring-boot-starter-data-jpa用于创建支持JPA的数据访问应用。使用Spring Boot Starter,开发者可以避免手动管理依赖关系,简化项目配置过程。

Maven和Gradle构建工具

Maven和Gradle是两种流行的构建工具,用于管理项目的构建、依赖关系和部署等任务。在Spring Boot项目中,通常使用Maven或Gradle来管理项目的依赖关系和构建过程。

  1. Maven: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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.5.4</version>
        </dependency>
    </dependencies>
</project>
  1. Gradle:Gradle使用build.gradle文件来描述项目的构建过程和依赖关系。示例如下:
plugins {
    id 'org.springframework.boot' version '2.5.4'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

自动配置机制

Spring Boot通过自动配置机制简化应用的配置过程。Spring Boot会根据应用的类路径(Classpath)自动配置所需的组件和服务。例如,如果项目中包含spring-boot-starter-web依赖,Spring Boot会自动配置一个嵌入式的Tomcat服务器并启动它。

Spring Boot的自动配置过程主要通过@Configuration注解的配置类来实现。例如,SpringApplication类会自动查找并应用所有标记为@SpringBootApplication的配置类。

创建和运行第一个Spring Boot应用

使用Spring Initializr快速创建项目

  1. 访问Spring Initializr官网:https://start.spring.io/
  2. 选择项目的基本信息,如项目语言、依赖等。例如,选择Java语言和Spring Web Starter作为项目依赖。
  3. 下载并解压生成的项目压缩包。

项目结构详解

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

src/main/java/
    com/example/demo/
        DemoApplication.java
src/main/resources/
    application.properties
pom.xml
  • DemoApplication.java:这是主入口类,包含了@SpringBootApplication注解。
  • application.properties:用于存储应用的配置属性。
  • pom.xml:用于管理项目的依赖关系和构建过程。

运行应用并测试

  1. 启动应用:在IDE中运行DemoApplication类的main方法,或者通过命令行运行mvn spring-boot:run
  2. 访问应用:应用启动后,默认情况下会在http://localhost:8080上运行。可以通过浏览器或工具访问该地址来测试应用。

Spring Boot常用注解和组件

@SpringBootApplication注解

@SpringBootApplication是Spring Boot项目中的一个核心注解,用于标记项目主类。它实际上是@Configuration@EnableAutoConfiguration@ComponentScan这三个注解的组合。

  • @Configuration:标记类为一个配置类,用于配置Bean。
  • @EnableAutoConfiguration:启用自动配置功能。
  • @ComponentScan:启用组件扫描功能,扫描指定包下的组件。

示例如下:

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

@RestController和@RequestMapping注解

@RestController@RequestMapping是Spring MVC中的常用注解,用于构建RESTful风格的Web应用。

  • @RestController:标记控制器类。与@Controller的区别在于@RestController会默认将返回值直接作为响应体返回,不需要额外的@ResponseBody注解。
  • @RequestMapping:用于映射Web请求到控制器的方法。可以指定请求路径、请求方法等。

示例如下:

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

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

使用Spring Boot内置的Web服务

Spring Boot内置了多个Web服务器,如Tomcat、Jetty等。默认情况下,Spring Boot会使用嵌入式的Tomcat服务器。可以通过配置文件或代码来选择和配置Web服务器。

示例如下,配置Spring Boot使用嵌入式的Jetty服务器:

spring:
  profiles:
  active: jetty
server:
  port: 8080

通过在application.propertiesapplication.yml文件中添加上述配置,Spring Boot会自动配置和启动Jetty服务器。

实战演练:添加功能到你的Spring Boot应用

添加数据库支持

要在Spring Boot应用中添加数据库支持,可以使用Spring Data JPA。以下是步骤:

  1. 添加依赖:在pom.xmlbuild.gradle中添加Spring Data JPA的依赖。
  2. 配置数据库连接:在配置文件中配置数据库连接信息。
  3. 创建实体类和仓库接口:定义数据模型和对应的仓库接口。

示例如下:

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

配置数据库连接:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: root
  jpa:
    hibernate:
      ddl-auto: update

创建实体类和仓库接口:

package com.example.demo.entity;

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

集成Spring Security进行安全控制

Spring Security是Spring框架中用于安全控制的核心模块。以下是集成Spring Security的步骤:

  1. 添加依赖:在pom.xmlbuild.gradle中添加Spring Security的依赖。
  2. 配置安全规则:通过Spring Security提供的配置类或XML配置文件,定义安全规则。
  3. 创建认证和授权的实现:实现认证和授权逻辑。

示例如下:

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

配置安全规则:

package com.example.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/admin/**").hasRole("ADMIN")
                .antMatchers("/user/**").hasAnyRole("USER", "ADMIN")
                .anyRequest().permitAll()
            .and()
            .formLogin()
                .loginPage("/login")
                .permitAll()
            .and()
            .logout()
                .permitAll();
    }
}

使用Spring Boot Actuator监控应用状态

Spring Boot Actuator是一个插件,提供了监控和管理应用的功能。通过Actuator可以查看应用的状态信息,如线程信息、JVM运行时信息等。以下是启用Actuator的步骤:

  1. 添加依赖:在pom.xmlbuild.gradle中添加Spring Boot Actuator的依赖。
  2. 配置Actuator端点:通过配置文件启用或禁用特定的Actuator端点。
  3. 访问Actuator端点:访问http://localhost:8080/actuator来查看应用状态信息。

示例如下:

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

配置Actuator端点:

management:
  endpoints:
    web:
      exposure:
        include: '*'

通过上述配置,Actuator的所有端点都将通过HTTP暴露出来,可以通过访问http://localhost:8080/actuator来查看应用的状态信息。

总结

本文介绍了Spring Boot的基本概念、环境搭建、基本概念和术语、创建和运行第一个Spring Boot应用、常用注解和组件,以及实战演练部分,详细讲解了添加数据库支持、集成Spring Security进行安全控制和使用Spring Boot Actuator监控应用状态。希望这些内容能够帮助你快速上手Spring Boot开发。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP