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

SpringBoot单体架构搭建入门教程

概述

本文详细介绍了如何搭建Spring Boot单体架构,通过自动配置和依赖注入等功能简化开发流程。内容包括开发环境准备、项目创建、依赖添加和配置,并辅以示例代码和配置说明。Spring Boot单体架构搭建入门教程将帮助开发者快速构建独立运行的Web应用。

Spring Boot 单体架构搭建入门教程
Spring Boot 简介

Spring Boot 是什么

Spring Boot 是 Spring 的一个模块,旨在简化新 Spring 应用的初始搭建以及开发过程。它通过约定优于配置的原则,为开发者提供了大量的默认配置,使得开发者可以快速地开发出独立运行的微服务应用。Spring Boot 基于 Spring 框架,提供了自动配置和依赖注入等功能,简化了 Spring 应用的开发流程。

Spring Boot 的优点

  1. 自动配置:Spring Boot 通过约定优于配置的原则,自动配置了许多常见的应用场景,如数据库访问、缓存、邮件发送、任务调度等。例如,当使用 H2 数据库时,只需要简单的配置就能启动一个内存数据库实例。
  2. 嵌入式的 Web 服务器:Spring Boot 通常会与嵌入式的 Tomcat、Jetty 或 Undertow 一起使用,使得开发者可以直接运行应用,而不需要部署到外部的 Web 服务器上。这极大地简化了开发流程,减少了部署的复杂性。
  3. 独立的可执行 JAR 文件:Spring Boot 应用可以被打包成独立运行的可执行 JAR 文件,包含了应用的所有依赖,方便部署。开发者可以通过 Maven 或 Gradle 打包应用,然后使用 java -jar 命令运行。
  4. 无代码的生产就绪:Spring Boot 通过默认的配置和优化,使得应用在生产环境中可以立即运行,无需额外的配置调整。例如,Spring Boot 会自动配置生产级别的日志记录和错误处理机制。
  5. 全面的自动化:从创建、测试到部署,Spring Boot 提供了全面的自动化支持,减少了开发者的负担。例如,Spring Boot 提供了自动化测试支持,使得开发者可以方便地编写单元测试和集成测试。
  6. 微服务支持:Spring Boot 本身是构建微服务的基础,支持配置、健康检查、监控等功能。例如,通过 Spring Boot Admin 可以轻松地监控微服务的健康状态和性能指标。

Spring Boot 的使用场景

  • 快速开发Web应用
  • 快速开发微服务
  • 快速构建RESTful API
  • 快速集成数据库、缓存、消息队列等中间件
  • 快速开发企业级应用
单体架构简介

单体架构的定义

单体架构(Monolithic Architecture)是一种将应用的所有组件(如业务逻辑、数据库访问、用户界面等)紧密耦合在一起的架构方式。在单体架构中,应用的所有部分都运行在一个进程中,共享同一个代码库和数据库。

单体架构的特点

  1. 紧密耦合:单体应用的各个组件紧密耦合,共享同一个代码库和数据库。
  2. 单一部署:应用的所有部分都运行在一个进程中,通常部署为一个单一的可执行文件。
  3. 单一版本控制:单体应用通常只有一个版本控制库,所有的代码都在这个库中。
  4. 易于开发:由于所有组件共享一个代码库,开发和测试相对简单。
  5. 易于部署:单体应用通常可以打包为一个可执行文件,部署相对简单。

单体架构的应用场景

  • 小型项目:对于简单的小型项目,单体架构可以快速构建并部署。
  • 传统企业应用:对于那些依赖于传统架构的企业应用,单体架构更加适合。
  • 初期开发:在项目初期,使用单体架构可以快速搭建基本功能,之后再进行拆分。
  • 小团队开发:在小团队中,单体架构更容易管理和协作。
准备开发环境

安装 JDK

JDK(Java Development Kit)是 Java 开发工具包,包含了 Java 编译器、JVM(Java Virtual Machine)以及运行 Java 应用所需的工具和库文件。

安装步骤

  1. 访问 Oracle 官方网站下载 JDK。
  2. 解压下载的 JDK 安装包。
  3. 设置 JDK 的环境变量(如 JAVA_HOME)。
  4. 验证安装是否成功(运行 java -version)。

示例代码

# 设置环境变量
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH

# 验证安装
java -version

安装 IDE(如 IntelliJ IDEA 或 Spring Tool Suite)

选择一个适合的 IDE(如 IntelliJ IDEA 或 Spring Tool Suite)进行开发。

安装步骤

  1. 访问 IntelliJ IDEA 官网下载安装包。
  2. 安装并启动 IntelliJ IDEA。
  3. 配置 IntelliJ IDEA(如设置代码风格、安装插件等)。

示例代码

# 下载 IntelliJ IDEA
wget https://download.jetbrains.com/idea/ideaIU-2021.3.2.tar.gz

# 解压安装包
tar -xvf ideaIU-2021.3.2.tar.gz

# 启动 IntelliJ IDEA
/path/to/idea.sh

安装 Maven 或 Gradle

Maven 和 Gradle 是两个流行的构建工具,用于管理项目的依赖和构建流程。

Maven

  1. 访问 Maven 官方网站下载 Maven。
  2. 解压下载的 Maven 安装包。
  3. 设置 Maven 的环境变量(如 M2_HOME)。
  4. 配置 MAVEN_HOME 环境变量,并将其添加到 PATH 中。
  5. 验证安装是否成功(运行 mvn -version)。

示例代码

# 设置环境变量
export M2_HOME=/path/to/maven
export PATH=$M2_HOME/bin:$PATH

# 验证安装
mvn -version

Gradle

  1. 访问 Gradle 官方网站下载 Gradle。
  2. 解压下载的 Gradle 安装包。
  3. 设置 Gradle 的环境变量(如 GRADLE_HOME)。
  4. 配置 GRADLE_HOME 环境变量,并将其添加到 PATH 中。
  5. 验证安装是否成功(运行 gradle -version)。

示例代码

# 设置环境变量
export GRADLE_HOME=/path/to/gradle
export PATH=$GRADLE_HOME/bin:$PATH

# 验证安装
gradle -version
创建 Spring Boot 项目

使用 IDE 创建 Spring Boot 项目

使用 IntelliJ IDEA 或 Spring Tool Suite 创建 Spring Boot 项目。

创建步骤

  1. 打开 IntelliJ IDEA 或 Spring Tool Suite。
  2. 选择 File -> New -> Project
  3. 选择 Spring Initializr
  4. 输入项目的基本信息(如项目名称、语言、构建工具等)。
  5. 选择所需的技术堆(如 Spring Web、Spring Data JPA 等)。
  6. 创建项目。

示例代码

<!-- 示例的 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>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <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>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

使用 Spring Initializr 创建项目

使用在线的 Spring Initializr 创建 Spring Boot 项目。

创建步骤

  1. 访问 Spring Initializr 网站。
  2. 输入项目的基本信息(如项目名称、语言、构建工具等)。
  3. 选择所需的技术堆(如 Spring Web、Spring Data JPA 等)。
  4. 下载项目。
  5. 解压下载的项目并导入 IntelliJ IDEA 或 Spring Tool Suite。

项目目录结构解析

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

src
├── main
│   ├── java
│   │   └── com.example.demo
│   │       ├── DemoApplication.java
│   │       ├── controller
│   │       │   └── HelloController.java
│   │       └── repository
│   │           └── UserRepository.java
│   └── resources
│       ├── application.yml
│       └── static
│           └── index.html
└── test
    └── java
        └── com.example.demo
            └── DemoApplicationTests.java
  • src/main/java:包含 Java 源代码,如应用入口点 DemoApplication.java 和各种控制器、服务及仓库接口。
  • src/main/resources:包含资源文件,如配置文件 application.yml 和静态文件 index.html
  • src/test/java:包含单元测试代码,如 DemoApplicationTests.java
添加依赖和配置

添加常用依赖

在 Spring Boot 项目中,可以通过在 pom.xmlbuild.gradle 文件中添加依赖来引入所需的库。

示例代码

<!-- 添加 Web 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- 添加 JPA 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<!-- 添加 H2 数据库依赖 -->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>

配置文件的使用

Spring Boot 项目可以使用 application.propertiesapplication.yml 文件进行配置。

使用 application.properties

# 配置数据库
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

使用 application.yml

spring:
  datasource:
   url: jdbc:h2:mem:testdb
   driver-class-name: org.h2.Driver
   username: sa
   password: password
 jpa:
   database-platform: org.hibernate.dialect.H2Dialect

常见配置项解析

  • spring.datasource.url:数据库连接地址。
  • spring.datasource.driver-class-name:数据库驱动类名。
  • spring.datasource.username:数据库用户名。
  • spring.datasource.password:数据库密码。
  • spring.jpa.database-platform:设置 JPA 的数据库方言。
  • spring.application.name:应用名称。
  • spring.application.version:应用版本。
  • spring.mvc.view.prefix:视图前缀。
  • spring.mvc.view.suffix:视图后缀。
编写基本 Controller 和 Service

创建第一个 Controller

编写一个简单的 Controller 类,处理 HTTP 请求。

示例代码

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")
public class HelloController {

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

创建对应的 Service 和 Repository

编写 Service 类和 Repository 类来处理业务逻辑和数据访问。

示例代码

package com.example.demo.repository;

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

import com.example.demo.model.User;

public interface UserRepository extends JpaRepository<User, Long> {
}

示例代码

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.model.User;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

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

单元测试

编写单元测试来验证 Controller 和 Service 的功能。

示例代码

package com.example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.http.ResponseEntity;

import static org.junit.jupiter.api.Assertions.assertEquals;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class DemoApplicationTests {

    @Autowired
    private TestRestTemplate restTemplate;

    @Test
    public void contextLoads() {
        ResponseEntity<String> response = restTemplate.getForEntity("/api/hello", String.class);
        assertEquals("Hello, Spring Boot!", response.getBody());
    }
}
点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消