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

Springboot微服务学习入门详解

慕斯709654
关注TA
已关注
手记 317
粉丝 37
获赞 183
概述

Spring Boot微服务学习入门介绍了Spring Boot的基本概念和优势,包括快速搭建第一个Spring Boot应用的步骤,详细解析了项目的结构和常用功能,同时深入探讨了如何使用Spring Boot进行微服务的实践。

Spring Boot简介

Spring Boot 是一个由 Spring 团队开发的开源框架,它旨在简化使用 Spring 框架开发新应用程序的难度。Spring Boot 可以独立运行,无需部署到容器中,通过使用约定大于配置的原则,使开发过程更为简单。

Spring Boot是什么

Spring Boot 是一套用来简化 Spring 应用初始搭建以及开发过程的工具,它使用特定的方式来进行配置,让开发人员无需编写大量的配置代码。Spring Boot 使得创建独立的、生产级别的基于 Spring 的应用程序变得非常简单。

Spring Boot的优势

  • 开箱即用:Spring Boot 提供了默认配置,使得开发人员可以在开发初期无需过多配置即可启动应用。
  • 无代码干扰:开发人员可以专注于业务逻辑,而不是基础设施的配置。
  • 支持嵌入式服务器:默认集成 Tomcat、Jetty 和 Undertow 作为应用服务器,无需编写额外代码。
  • 自动配置:Spring Boot 能够根据类路径中的依赖自动配置应用程序。
  • 命令行界面:提供了一组命令行工具,方便进行应用的打包和启动。
  • 插件支持:内置了 Maven 和 Gradle 插件,简化了构建过程。
  • 健康检查和监控:提供了健康检查和应用监控的功能,方便了解应用的运行状态。
  • 独立运行:可以通过“jar”或“war”包运行应用程序,无需部署到容器中。

常用的Spring Boot版本与下载

Spring Boot 定期发布新版本,每个版本都有其适用的 Spring 框架版本。例如,Spring Boot 2.7.x 版本兼容 Spring 5.3.x 版本。Spring Boot 最新版本可以到官方网站下载,或者通过 Maven 和 Gradle 仓库获取依赖。

<!-- Maven 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>2.7.5</version>
</dependency>

<!-- Gradle 依赖 -->
implementation 'org.springframework.boot:spring-boot-starter:2.7.5'
快速搭建第一个Spring Boot应用

本节将详细介绍如何快速搭建一个 Spring Boot 应用。我们将从开发环境配置开始,然后创建一个简单的 Spring Boot 项目,并运行第一个 Spring Boot 应用。

开发环境配置

开发 Spring Boot 应用需要配置开发环境。一般需要安装 Java 开发工具包(JDK)和集成开发环境(IDE)。建议使用 JDK 8 或更高版本。对于 IDE,推荐使用 IntelliJ IDEA 或 Eclipse。

安装 JDK:

# 下载 JDK 安装包
wget https://download.oracle.com/java/18/latest/jdk-18_linux-x64_bin.tar.gz

# 解压安装包
tar -xvf jdk-18_linux-x64_bin.tar.gz
sudo mv jdk-18 /usr/local/java

# 配置环境变量
echo 'export JAVA_HOME=/usr/local/java/jdk-18' >> ~/.bashrc
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc
source ~/.bashrc

# 验证安装
java -version

安装 IDE:

# 安装 IntelliJ IDEA
wget https://download.jetbrains.com/idea/ideaIC-2021.3.3.tar.gz
tar -xvf ideaIC-2021.3.3.tar.gz
sudo mv ideaIC-2021.3.3 /usr/local/idea

echo 'export IDEA_HOME=/usr/local/idea' >> ~/.bashrc
echo 'export PATH=$PATH:$IDEA_HOME/bin' >> ~/.bashrc
source ~/.bashrc

# 启动 IntelliJ IDEA
idea.sh
创建Spring Boot项目

可以通过以下几种方式创建 Spring Boot 项目:

  1. 使用 Spring Initializr:在线创建项目。
  2. 使用 IDE 插件:例如 IntelliJ IDEA 和 Eclipse 都有 Spring Boot 插件。
  3. 手动创建项目:使用 Maven 或 Gradle 创建项目。

下面以 Maven 创建项目为例,手动创建一个简单的 Spring Boot 项目。

创建Spring Boot项目

  1. 创建 Maven 项目
mvn archetype:generate -DgroupId=com.example -DartifactId=spring-boot-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  1. 添加 Spring Boot 依赖

编辑 pom.xml 文件,添加 Spring Boot 依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  1. 创建主类

src/main/java/com/example/springbootdemo 路径下创建主类 Application.java

package com.example.springbootdemo;

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

运行第一个Spring Boot应用

运行项目:

mvn spring-boot:run

访问 http://localhost:8080/,应能看到默认的欢迎页面。

Spring Boot项目结构解析

Spring Boot 项目的结构相对简单。一个简单的 Spring Boot 应用通常包括主类、配置文件和资源文件等。本节将详细解析 Spring Boot 项目的结构,包括核心配置文件 application.propertiesapplication.yml,自动装配原理,以及依赖管理。

核心配置文件application.properties/application.yml

Spring Boot 配置文件主要有两种格式:application.propertiesapplication.yml。这些文件用于设置 Spring Boot 应用的各种配置。

application.properties

# server 配置
server.port=8080
server.servlet.context-path=/api

# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

application.yml

server:
  port: 8080
servlet:
  context-path: /api

spring:
  datasource:
  url: jdbc:mysql://localhost:3306/mydb
  username: root
  password: root
  driver-class-name: com.mysql.jdbc.Driver
自动装配原理

Spring Boot 通过 @SpringBootApplication 注解自动装配组件。@SpringBootApplication 注解包含了 @Configuration@EnableAutoConfiguration@ComponentScan 三个注解。

  • @Configuration:标记配置类,允许声明 @Bean 方法。
  • @EnableAutoConfiguration:开启自动装配,根据类路径中的依赖,推断并配置 Spring 应用。
  • @ComponentScan:自动扫描并装配标记了 @Component 的类。
依赖管理

Spring Boot 项目使用 Maven 或 Gradle 管理依赖。依赖管理简化了项目依赖配置,自动装配提供了常用的默认配置。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
常用功能介绍

本节将介绍 Spring Boot 中常用的几个功能,包括 RESTful API 的创建、数据库集成(如 JPA 和 MyBatis)、配置文件与属性配置。

RESTful API的创建

创建 RESTful API 可以使用 Spring Boot 提供的 @RestController@Controller 注解。通常使用 @RestController 简化编码。

创建RESTful API

package com.example.springbootdemo;

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!";
    }
}
数据库集成(JPA、MyBatis等)

Spring Boot 支持多种数据库访问方式,如 JPA、MyBatis 等。这里以 JPA 为例介绍数据库集成。

执行数据库集成

package com.example.springbootdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

@SpringBootApplication
@EntityScan(basePackages = "com.example.springbootdemo.entity")
@EnableJpaRepositories(basePackages = "com.example.springbootdemo.repository")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

创建实体类

package com.example.springbootdemo.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
}

创建 Repository 层

package com.example.springbootdemo.repository;

import com.example.springbootdemo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

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

MyBatis 使用细节

Spring Boot 也可以与 MyBatis 进行集成。下面是一个简单的 MyBatis 配置示例:

  1. 添加依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mybatis</artifactId>
</dependency>
  1. 创建 MyBatis 配置
mybatis:
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
  1. 创建实体类
package com.example.springbootdemo.entity;

public class User {
    private Long id;
    private String name;
    private String email;

    // Getters and Setters
}
  1. 创建 Mapper 接口
package com.example.springbootdemo.mapper;

import com.example.springbootdemo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM user WHERE id = #{id}")
    User getUserById(Long id);
}
配置文件与属性配置

Spring Boot 使用 @Value@ConfigurationProperties 注解配置属性,或者直接在配置文件中设置属性值。

使用@Value注解

package com.example.springbootdemo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class ApplicationProperties {
    @Value("${server.port}")
    private String serverPort;

    public String getServerPort() {
        return serverPort;
    }
}

使用@ConfigurationProperties注解

package com.example.springbootdemo;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "server")
public class ServerProperties {
    private String port;
    private String contextPath;

    // Getters and Setters
}
Spring Boot微服务实践

Spring Boot 适合构建微服务架构,这一节将介绍微服务的基本概念,如何使用 Spring Boot 创建微服务,以及服务注册与发现(如使用 Eureka)。

微服务概念简介

微服务是一种将单个应用程序拆分为多个小型、独立服务的方法。每个服务职责单一,通过 API 进行通信。微服务架构可以提高开发和部署速度,提高系统可维护性。

使用Spring Boot创建微服务

Spring Boot 微服务通常使用 REST API 进行通信,通过 Spring Cloud 实现服务注册与发现。

创建微服务项目

  1. 创建项目
mvn archetype:generate -DgroupId=com.example -DartifactId=service-user -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  1. 添加依赖
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>
  1. 配置文件
server:
  port: 8081

spring:
  application:
    name: service-user

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  1. 创建主类
package com.example.serviceuser;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

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

服务注册与发现(如使用Eureka)

Eureka 是 Netflix 开源的一个服务注册与发现组件,用于构建服务发现系统。

创建Eureka Server

  1. 创建项目
mvn archetype:generate -DgroupId=com.example -DartifactId=eureka-server -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  1. 添加依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  1. 配置文件
server:
  port: 8761

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
instance:
    hostname: localhost

spring:
 application:
    name: eureka-server
  1. 创建主类
package com.example.eurekaserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

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

运行微服务和Eureka Server

  1. 启动Eureka Server
mvn spring-boot:run
  1. 启动微服务
mvn spring-boot:run
总结与扩展学习
常见问题解答

1. Spring Boot 应用启动慢的原因有哪些?

  • 依赖过多:引入不必要的依赖会增加启动时间。
  • 配置复杂:复杂的配置文件会增加启动时间。
  • 热加载:使用热加载工具(如 Spring Boot DevTools)在开发环境中可以加快启动速度,但在生产环境可能会增加启动时间。

2. 如何解决 Spring Boot 启动时的内存溢出问题?

  • 增加内存设置:通过 JVM 参数 -Xms-Xmx 设置初始堆内存和最大堆内存。
  • 配置文件优化:优化 application.propertiesapplication.yml 中的配置,减少不必要的资源加载。
进阶学习资源推荐

推荐学习网站:慕课网 提供丰富的 Spring Boot 和微服务相关课程,适合不同水平的学习者。

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