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

Springboot框架学习:初学者指南

标签:
SpringBoot

本文将详细介绍Spring Boot框架学习的相关内容,包括框架简介、环境搭建、第一个Spring Boot应用的创建以及常用注解和配置等。文章还将指导读者配置数据库集成和项目打包部署,帮助读者快速掌握Spring Boot框架学习。

Spring Boot简介

什么是Spring Boot

Spring Boot 是一个基于Spring框架的框架,它简化了Spring应用的初始搭建以及开发过程。Spring Boot通过自动配置、约定优于配置的原则简化了Spring应用的开发。它允许开发者快速构建独立的、生产级别的Spring应用。Spring Boot不需要开发者编写大量的配置文件,而是提供了默认的配置,使得开发者可以专注于业务逻辑的开发。

Spring Boot的主要特点和优势

  • 自动配置:Spring Boot 通过自动配置机制降低了开发难度,它可以根据类路径上的jar包自动配置应用。
  • 约定优于配置:开发者只需遵守一些约定,就可以避免编写大量的配置代码。
  • 内嵌Web服务器:Spring Boot 可以内嵌Tomcat、Jetty或Undertow等Web服务器,使得应用可以作为一个独立的可执行jar文件运行。
  • 全面的生产级特性:包括指标、健康检查、外部配置等。
  • 无需XML配置:Spring Boot 通过Java注解和属性配置的方式,减少了对XML配置文件的依赖。
  • 支持动态配置:可以通过命令行参数、环境变量或系统属性来修改运行时配置。
  • 支持多环境配置:可以为不同的环境(如开发环境、测试环境、生产环境)提供不同的配置文件。

Spring Boot与传统Spring框架的区别

特性 Spring Boot 传统Spring框架
配置复杂性 简化了配置,约定优于配置 需要手动配置
自动配置 提供自动配置功能 需要手动配置
内嵌服务器 内嵌Tomcat、Jetty或Undertow 需要额外配置Web服务器
依赖管理 通过Maven或Gradle快速添加依赖 手动管理依赖
启动运行时间 快速启动 需要配置启动文件
打包方式 打包为可执行jar文件 打包为war文件
环境搭建

开发环境要求

安装并配置好Java环境后,可以开始搭建Spring Boot开发环境。开发环境的要求如下:

  • 操作系统:Windows、Linux、macOS。
  • Java开发工具包(JDK):版本8或以上。
  • 版本控制工具:Git。
  • IDE:推荐使用IntelliJ IDEA、Eclipse或STS(Spring Tool Suite)。
  • Maven或Gradle:用于构建和管理项目依赖。
  • Spring Boot版本:如2.3.x、2.4.x等。

安装Java环境

  1. 下载Java:访问Oracle官网或OpenJDK官网下载Java开发工具包(JDK)。
  2. 安装Java:运行下载的安装包,按照安装向导完成Java的安装。
  3. 设置环境变量:在安装完成后,需要设置环境变量。
    • Windows:在“此电脑”属性 -> 高级系统设置 -> 环境变量中设置JAVA_HOME、Path。
    • Linux/macOS:在终端中编辑.bashrc或.profile文件,添加Java环境变量。

示例代码:

# 设置环境变量
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH

下载并配置Spring Boot

  1. 下载Spring Boot:访问Spring Boot官方网站,下载所需版本的Spring Boot。
  2. 创建项目:可以使用Spring Initializr创建新的Spring Boot项目。

示例代码:

<!-- 使用Spring Initializr生成的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/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.4.0</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

使用IDE创建Spring Boot项目

  1. 打开IDE:打开IntelliJ IDEA或Eclipse。
  2. 创建新项目:选择Spring Initializr创建项目。
  3. 选择依赖:选择所需依赖,如Spring Web、Spring Data JPA等。

示例代码:

<!-- 使用Eclipse或IntelliJ IDEA创建的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/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.4.0</version>
    </parent>
    <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>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
第一个Spring Boot应用

创建简单的Spring Boot应用

  1. 新建项目:使用IDE创建一个新的Spring Boot项目。
  2. 添加Hello World控制器:在项目中创建一个简单的控制器来输出Hello World。
  3. 运行项目:启动应用并访问默认的端口来查看输出。

示例代码:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class DemoApplication {

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

    @RestController
    static class HelloWorldController {

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

运行并测试应用

  1. 启动应用:使用IDE运行项目,或者在终端中执行mvn spring-boot:run或者./mvnw spring-boot:run
  2. 访问应用:打开浏览器访问http://localhost:8080/hello

示例代码:

# 使用Maven启动Spring Boot应用
mvn spring-boot:run

应用结构解析

  • 主类:在src/main/java/com/example/demo/DemoApplication.java中,DemoApplication是Spring Boot应用的主类,包含main方法。
  • 控制器:在DemoApplication类中,HelloWorldController是Spring Boot控制器,通过@RestController标记为控制器,并使用@GetMapping注解映射到HTTP GET请求。
Spring Boot常用注解和配置

常用注解介绍

  • @SpringBootApplication:主类注解,用于标记主类。
  • @RestController:标记控制器类,使其返回数据对象而非视图。
  • @Service:标记服务类,主要用于业务逻辑处理。
  • @Component:标记组件,如数据访问层的DAO类。
  • @Configuration:标记配置类。
  • @EnableAutoConfiguration:启用自动配置。
  • @Repository:标记数据访问层的DAO类。
  • @Controller:标记控制器类。
  • @RequestMapping:映射HTTP请求到控制器中的操作。
  • @GetMapping@PostMapping@PutMapping@DeleteMapping:映射HTTP请求方法,简化@RequestMapping的使用。

示例代码:

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

配置文件(application.properties和application.yml)使用

  • application.properties:键值对形式的配置文件。
  • application.yml:YAML格式的配置文件,使用缩进和冒号进行配置。

示例代码(application.properties):

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=root

示例代码(application.yml):

server:
  port: 8080

spring:
  datasource:
  url: jdbc:mysql://localhost:3306/demo
  username: root
  password: root
数据库集成

添加数据库驱动依赖

pom.xmlbuild.gradle中添加数据库驱动依赖。

示例代码(pom.xml):

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

示例代码(build.gradle):

dependencies {
    implementation 'mysql:mysql-connector-java'
}

配置数据库连接

在配置文件application.propertiesapplication.yml中配置数据库连接信息。

示例代码(application.properties):

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

示例代码(application.yml):

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

实现简单的CRUD操作

创建一个简单的实体类、DAO类和控制器类来实现CRUD操作。

示例代码(实体类):

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.AUTO)
    private Long id;
    private String name;
    private String email;

    // Getters and Setters
}

示例代码(DAO类):

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

示例代码(控制器类):

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.*;

import java.util.List;

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

    @Autowired
    UserRepository userRepository;

    @GetMapping
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userRepository.save(user);
    }

    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User user) {
        User existingUser = userRepository.findById(id).orElse(null);
        if (existingUser != null) {
            existingUser.setName(user.getName());
            existingUser.setEmail(user.getEmail());
            return userRepository.save(existingUser);
        }
        return null;
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userRepository.deleteById(id);
    }
}

数据库迁移工具(如Spring Boot JPA)

使用Spring Boot JPA进行数据库迁移时,可以通过实体类的注解来定义数据库表结构,也可以直接编写SQL脚本进行数据库迁移。

示例代码(实体类):

package com.example.demo.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private String email;

    // Getters and Setters
}

示例代码(自定义SQL脚本):

-- 创建数据库表
CREATE TABLE users (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL
);
项目打包与部署

打包项目为可执行的jar文件

使用Maven或Gradle构建工具打包项目为可执行的jar文件。

示例代码(pom.xml):

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

示例代码(build.gradle):

plugins {
    id 'org.springframework.boot'
    id 'io.spring.dependency-management'
}

bootJar {
    manifest {
        attributes 'Main-Class': 'com.example.demo.DemoApplication'
    }
}

部署到本地服务器

将打包好的jar文件部署到服务器上,可以通过命令行启动。

示例代码:

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

使用容器(如Docker)部署Spring Boot应用

使用Docker容器部署Spring Boot应用可以简化部署过程。

  1. 编写Dockerfile:定义容器的构建方式。
  2. 构建镜像:使用docker build命令构建镜像。
  3. 运行容器:使用docker run命令运行容器。

示例代码(Dockerfile):

FROM adoptopenjdk/openjdk11:jre-slim
COPY target/demo-0.0.1-SNAPSHOT.jar /app/demo.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app/demo.jar"]

示例代码(构建并运行容器):

# 构建镜像
docker build -t my-spring-boot-app .

# 运行容器
docker run -p 8080:8080 my-spring-boot-app
点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消