亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Springboot單體架構搭建學習:從入門到實踐

概述

本文将详细介绍如何搭建和学习Spring Boot单体架构,从环境搭建到项目创建,再到数据库集成和部署监控,全面覆盖Spring Boot开发所需的关键步骤和知识。

Spring Boot简介

什么是Spring Boot

Spring Boot 是一个基于Spring框架的开箱即用(Out-of-the-box)的框架,它简化了Spring应用的初始搭建和配置。Spring Boot 旨在简化开发过程,使开发者能够快速搭建独立的、生产级别的应用,而无需大量繁琐的配置。它通过约定优于配置的原则,使开发者可以专注于业务逻辑的实现,而不是大量的配置细节。

Spring Boot的优势

  1. 简化配置:Spring Boot 自动配置了许多常用的场景,如内嵌的Servlet容器、数据库连接等,这使得开发者可以快速搭建应用,而不需要进行复杂的配置。
  2. 独立的可执行JAR文件:Spring Boot 可以生成独立的、可执行的JAR或WAR文件,这使得应用的部署变得更加简单,且易于在任何环境中运行。
  3. 内置特性:Spring Boot 提供了许多内置的功能,如嵌入式Servlet容器、健康检查、错误处理等,这极大地简化了应用的开发和维护。
  4. 无需XML配置:Spring Boot 鼓励使用Java注解来配置应用,而不是传统的XML配置文件,这使得配置更加简洁和易于理解。
  5. 快速开发周期:通过减少配置工作,Spring Boot 可以加快开发周期,使开发者能够更快地交付应用。

Spring Boot的生态系统

Spring Boot 作为Spring框架的一部分,与整个Spring ecosystem紧密集成。Spring Boot 可以轻松地与Spring框架的各种模块和第三方库集成,包括Spring Data、Spring Security、Spring Cloud等。此外,Spring Boot 还支持多种持久化存储和消息代理,如JPA、MyBatis、RabbitMQ、Kafka等,这使得开发者可以根据项目需求灵活选择技术栈。

环境搭建

JDK安装与配置

安装与配置 JDK 是使用 Spring Boot 的第一步。以下是安装 JDK 的步骤:

  1. 下载JDK:访问 Oracle 官网或其他 JDK 发行版网站下载 JDK。
  2. 安装JDK:按照下载页面的安装向导进行安装。
  3. 配置环境变量
    • 添加 JDK 的 bin 目录到系统 PATH
    • 设置 JAVA_HOME 环境变量,指向 JDK 的安装目录。
# 设置JAVA_HOME环境变量
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH

Maven或Gradle集成

Spring Boot 支持 Maven 和 Gradle 作为构建工具。以下是安装和配置 Maven 或 Gradle 的步骤:

Maven

  1. 下载Maven:访问 Maven 官方网站下载 Maven。
  2. 安装Maven:将下载的 Maven 解压到指定目录。
  3. 配置Maven
    • 设置 M2_HOME 环境变量,指向 Maven 的安装目录。
    • 将 Maven 的 bin 目录添加到系统 PATH
export M2_HOME=/path/to/maven
export PATH=$M2_HOME/bin:$PATH

Gradle

  1. 下载Gradle:访问 Gradle 官方网站下载 Gradle。
  2. 安装Gradle:将下载的 Gradle 解压到指定目录。
  3. 配置Gradle
    • 设置 GRADLE_HOME 环境变量,指向 Gradle 的安装目录。
    • 将 Gradle 的 bin 目录添加到系统 PATH
export GRADLE_HOME=/path/to/gradle
export PATH=$GRADLE_HOME/bin:$PATH

开发工具选择与配置

推荐使用 IntelliJ IDEA 或 Eclipse 作为开发工具,它们都提供了良好的 Spring Boot 支持。

IntelliJ IDEA

  1. 安装IntelliJ IDEA:访问 JetBrains 官网下载 IntelliJ IDEA。
  2. 配置IntelliJ IDEA
    • 打开 IntelliJ IDEA,选择 File -> New -> Project
    • 选择 Spring Initializr 模板,填写项目基本信息。
    • 完成项目创建后,导入 Maven 或 Gradle 依赖。
<!-- 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>my-spring-boot-app</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.4</version>
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  </dependencies>
</project>

Eclipse

  1. 安装Eclipse:访问 Eclipse 官网下载 Eclipse。
  2. 配置Eclipse
    • 打开 Eclipse,选择 File -> New -> Project
    • 选择 Maven ProjectGradle Project
    • 填写项目基本信息,完成项目创建。
// build.gradle 示例
plugins {
  id 'org.springframework.boot' version '2.5.4'
  id 'io.spring.dependency-management' version '1.0.11.RELEASE'
  id 'java'
}

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

repositories {
  mavenCentral()
}

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

创建第一个Spring Boot项目

使用Spring Initializr创建项目

Spring Initializr 是一个在线工具,用于快速创建 Spring Boot 项目。以下是创建项目的基本步骤:

  1. 访问 Spring Initializr 网站:https://start.spring.io/
  2. 填写项目信息:
    • Project:选择 Maven 或 Gradle。
    • Language:选择 Java。
    • Spring Boot:选择版本。
    • Project Metadata:填写 Group、Artifact、Name等基本信息。
    • Packaging:选择 Jar。
    • Dependencies:选择需要的依赖,如 Web、JPA、Thymeleaf等。
  3. 点击 Generate 按钮下载项目压缩包。
  4. 解压缩下载的压缩包,导入到 IntelliJ IDEA 或 Eclipse 中。
# 解压压缩包
unzip my-spring-boot-app.zip -d my-spring-boot-app

# 进入项目目录
cd my-spring-boot-app

# 使用Maven构建项目
mvn clean install

项目结构解析

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

my-spring-boot-app/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           └── myapp/
│   │   │               ├── Application.java
│   │   │               └── controller/
│   │   │                   └── HelloController.java
│   │   └── resources/
│   │       ├── application.properties
│   │       └── static/
│   └── test/
│       └── java/
│           └── com/
│               └── example/
│                   └── myapp/
│                       └── MyappApplicationTests.java
└── pom.xml
  • Application.java:应用的主启动类,包含 @SpringBootApplication 注解。
  • controller 包:包含控制器类,如 HelloController.java
  • resources/application.properties:包含应用的配置信息。
  • pom.xml:Maven 构建文件,包含项目依赖和配置信息。

运行第一个Spring Boot应用

在 IntelliJ IDEA 或 Eclipse 中运行应用的方法有所不同:

IntelliJ IDEA

  1. 右键 Application.java 文件。
  2. 选择 Run 'Application.main()'

Eclipse

  1. 右键 Application.java 文件。
  2. 选择 Run As -> Java Application

运行成功后,可以在浏览器中访问 http://localhost:8080,查看应用是否正常运行。

Spring Boot核心概念与常用注解

@SpringBootApplication注解详解

@SpringBootApplication 是 Spring Boot 中的核心注解,它组合了多个注解来简化 Spring Boot 应用的配置:

  • @Configuration:标记一个类,表示该类是配置类。
  • @EnableAutoConfiguration:开启自动配置,Spring Boot 会根据类路径中的依赖自动配置Spring应用。
  • @ComponentScan:启用组件扫描,扫描指定包及其子包中的组件,如 @Component、@Service、@Repository等。
// Application.java
package com.example.myapp;

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

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

@Controller、@Service、@Repository、@Component注解

  • @Controller:标记一个类为控制器,用于处理 HTTP 请求。
  • @Service:标记一个类为服务层,负责业务逻辑的实现。
  • @Repository:标记一个类为数据访问层,负责数据的持久化操作。
  • @Component:通用的组件注解,表示该类是一个 Spring 组件。
// HelloController.java
package com.example.myapp.controller;

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

@RestController注解与RESTful服务

@RestController@Controller@ResponseBody 注解的组合,用于编写 RESTful 服务。

// GreetingController.java
package com.example.myapp.controller;

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

@RestController
public class GreetingController {
  @GetMapping("/greeting")
  public String greeting() {
    return "Hello, RESTful World!";
  }
}

@Autowired与DI依赖注入

@Autowired 注解用于实现依赖注入,将一个 Bean 注入到另一个 Bean 中。

// GreetingService.java
package com.example.myapp.service;

public class GreetingService {
  public String greeting() {
    return "Hello, World!";
  }
}

// GreetingController.java
package com.example.myapp.controller;

import com.example.myapp.service.GreetingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {
  private final GreetingService greetingService;

  @Autowired
  public GreetingController(GreetingService greetingService) {
    this.greetingService = greetingService;
  }

  @GetMapping("/greeting")
  public String greeting() {
    return greetingService.greeting();
  }
}

数据库集成与配置

连接数据库(MySQL示例)

为了连接 MySQL 数据库,需要在 pom.xml 中添加相应的依赖:

<!-- pom.xml -->
<dependencies>
  <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>

配置数据源与JDBC连接池

application.properties 文件中配置数据库连接信息:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
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/mydb
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

实体类与Repository接口

定义实体类和 Repository 接口:

// User.java
package com.example.myapp.model;

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;
  }
}
// UserRepository.java
package com.example.myapp.repository;

import com.example.myapp.model.User;
import org.springframework.data.jpa.repository.JpaRepository;

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

CRUD操作示例

实现 CRUD 操作的示例代码:

// UserService.java
package com.example.myapp.service;

import com.example.myapp.model.User;
import com.example.myapp.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
  private final UserRepository userRepository;

  @Autowired
  public UserService(UserRepository userRepository) {
    this.userRepository = userRepository;
  }

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

  public User findById(Long id) {
    return userRepository.findById(id).orElse(null);
  }

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

  public void deleteById(Long id) {
    userRepository.deleteById(id);
  }
}
// UserController.java
package com.example.myapp.controller;

import com.example.myapp.model.User;
import com.example.myapp.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {
  private final UserService userService;

  @Autowired
  public UserController(UserService userService) {
    this.userService = userService;
  }

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

  @PostMapping("/")
  public User createUser(@RequestBody User user) {
    return userService.save(user);
  }

  @GetMapping("/{id}")
  public User getUserById(@PathVariable Long id) {
    return userService.findById(id);
  }

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

部署与运行

打包与发布应用

将 Spring Boot 应用打包为可执行的 JAR 文件:

mvn clean package

应用部署到Tomcat或外部服务器

将打包后的 JAR 文件部署到 Tomcat 或其他应用服务器上:

  1. 安装Tomcat
    • 下载并解压 Tomcat。
    • 配置 Tomcat 的用户和密码。
    • 解压 my-spring-boot-app.jar 文件到 webapps 目录。
    • 启动 Tomcat:./bin/startup.sh
# 解压JAR文件
jar -xvf target/my-spring-boot-app.jar -C /path/to/tomcat/webapps/

# 启动Tomcat
cd /path/to/tomcat
./bin/startup.sh

应用监控与日志管理

Spring Boot 提供了多种监控和日志管理工具,如 Actuator 和 Logback。

Actuator

  • management.endpoints.web.exposure.include:配置可以访问的Actuator端点。
  • management.endpoint.health.show-details:配置健康检查详情。
spring:
  application:
   name: my-spring-boot-app
 management:
   endpoints:
     web:
       exposure:
         include: "*"
   endpoint:
     health:
       show-details: always

Logback

  • logging.config:指定 Logback 配置文件的路径。
  • logging.level.<package>:配置不同包的日志级别。
logging.config=classpath:logback-spring.xml
logging.level.com.example.myapp=DEBUG

通过以上的配置,可以更好地监控应用的运行状态和管理日志输出。

总结

通过本文的学习,您已经了解了 Spring Boot 的基本概念、环境搭建、项目创建、核心注解、数据库集成、部署与监控。希望您在后续的开发过程中能够熟练掌握这些知识,并将其应用到实际项目中。如果需要更多详细的教程和示例,可以参考慕课网(http://www.xianlaiwan.cn/)的在线课程

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消