Eclipse中的SpringBoot入门项目实战

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:SpringBoot是一个简化Spring应用开发的轻量级框架,利用自动配置和起步依赖来简化项目搭建。本入门工程案例特别针对Eclipse IDE进行设计,帮助初学者快速理解SpringBoot的核心概念和工作原理。案例涵盖了自动配置、起步依赖、Eclipse集成、Web应用示例、Web MVC框架、模板引擎、配置文件使用、日志系统、应用打包及运行,以及健康检查与Actuator监控等关键实践。
SpringBoot入门工程案例Eclipse工程代码

1. SpringBoot入门和核心概念

SpringBoot简介

SpringBoot是由Pivotal团队提供的全新框架,旨在简化Spring应用的初始搭建以及开发过程。它遵循“约定优于配置”的原则,提供了大量默认配置,让开发者能够快速上手并专注于业务逻辑的实现。

SpringBoot的优势

SpringBoot具有以下优势:

  • 快速搭建项目结构 :通过起步依赖简化了Maven和Gradle的配置。
  • 独立运行的特性 :生成的Spring应用可打包为一个独立的Jar或War包。
  • 无代码生成和XML配置 :不需要生成代码,也不需要手动管理Spring配置。
  • 提供生产就绪功能 :如指标、健康检查和外部化配置。

入门实践

开始使用SpringBoot,首先需要理解其核心概念,例如:

  • SpringBoot启动器(Starters) :简化构建配置,例如 spring-boot-starter-web 包含了构建web应用所需的所有依赖。
  • 自动配置(Auto-configuration) :SpringBoot会根据类路径中的jar包以及定义的Bean自动配置Spring应用。
  • 命令行界面(CLI) :提供快速的原型开发能力,无需完全开发环境即可运行SpringBoot应用。

接下来的章节将详细介绍如何配置和优化SpringBoot应用,使用起步依赖来简化构建过程,以及如何在Eclipse IDE中高效地开发SpringBoot项目。

2. 自动配置实现与 @SpringBootApplication 注解

2.1 自动配置的原理

2.1.1 SpringBoot的自动配置机制

SpringBoot之所以受到开发者的青睐,其自动配置机制功不可没。它旨在减少配置工作量,让开发者能够快速启动和运行Spring应用程序。自动配置是SpringBoot的核心特性之一,它利用了条件注解 @Conditional 来决定是否需要启用特定的配置。

SpringBoot的自动配置是在应用启动时进行的,当应用类路径下存在相应的库时,SpringBoot会尝试配置某些bean。默认情况下,SpringBoot提供了一组通用的自动配置,这些配置是在 spring-boot-autoconfigure 模块中定义的。

在自动配置过程中,SpringBoot会尝试根据添加到类路径下的依赖来猜测开发者的需求,并配置相应的Spring组件。例如,如果你的项目中添加了 spring-boot-starter-web 依赖,那么SpringBoot会自动配置嵌入式Servlet容器(如Tomcat)和Spring MVC。

值得注意的是,自动配置并不强制覆盖手动配置。如果有需要,开发者依然可以通过自定义配置类或配置文件覆盖或扩展自动配置。

2.1.2 条件注解和排除自动配置

SpringBoot使用 @Conditional 家族注解来决定何时创建和注册特定的bean。这个家族包括了多个注解,例如:

  • @ConditionalOnClass :只有当指定的类存在时,配置才会生效。
  • @ConditionalOnMissingBean :只有当特定类型的bean不存在时,配置才会生效。
  • @ConditionalOnProperty :只有当指定的配置属性有特定值时,配置才会生效。

使用这些注解可以控制哪些自动配置应该生效,哪些应该被排除。例如,如果开发者不希望启用内置的数据库连接池配置,可以在配置文件中添加以下配置:

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

这条配置排除了 DataSourceAutoConfiguration 类,意味着相关的自动配置不会被加载。

通过这种方式,SpringBoot提供了灵活性,允许开发者控制自动配置的行为,以满足特定的需求和环境。

2.2 @SpringBootApplication 注解解析

2.2.1 @SpringBootApplication 的组成

@SpringBootApplication 是一个复合注解,它其实是由三个主要注解组合而成:

  • @Configuration :表明此类为Spring配置类,可以使用@Bean注解定义bean。
  • @EnableAutoConfiguration :启用SpringBoot的自动配置功能。
  • @ComponentScan :启用组件扫描,可以在指定的包下扫描带有 @Component @Service @Repository 等注解的类,并注册为Spring的bean。

@SpringBootApplication 注解的使用非常简单,通常只需要在主应用类上添加它即可。例如:

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

这个主应用类不仅作为应用的入口,还负责配置SpringBoot应用上下文。它会触发自动配置过程,并启动嵌入式Servlet容器来监听HTTP请求。

2.2.2 @EnableAutoConfiguration 的作用

@EnableAutoConfiguration 注解的作用是在Spring应用上下文启动时,自动配置Spring应用。它基于类路径下添加的依赖,以及各种属性的配置情况,来决定启动哪些自动配置类。

@EnableAutoConfiguration 默认会导入 EnableAutoConfigurationImportSelector 类,它会根据应用的类路径、其他配置信息以及已经定义的bean来动态选择并导入自动配置类。这个选择过程主要依赖于 spring.factories 文件中定义的配置信息。

对于开发者来说, @EnableAutoConfiguration 注解使得SpringBoot能够实现“约定优于配置”的理念,从而简化了大量配置工作。

2.2.3 应用上下文的初始化过程

Spring应用上下文的初始化是一个复杂但有序的过程。当通过 SpringApplication.run() 方法启动应用时,以下步骤会被执行:

  1. 创建 SpringApplication 对象,并调用 run() 方法。
  2. 启动应用上下文的初始化,包括解析配置类并加载bean定义。
  3. 触发 @EnableAutoConfiguration ,根据 spring.factories 文件中列出的自动配置类进行配置。
  4. 根据应用的类路径,应用相关的自动配置类。
  5. 加载 @ComponentScan 指定的包,扫描并注册组件。
  6. 应用上下文被刷新,所有的bean被初始化。

通过这个过程,SpringBoot能够在不显式配置的情况下,自动完成大部分Spring应用的配置工作。

整个初始化过程中,开发者可以利用监听器来插手,比如通过 SpringApplication.addListeners() 方法添加自定义的监听器,或者通过设置 spring.application.json 属性来提供额外的配置。

通过以上内容,可以看出 @SpringBootApplication 注解是SpringBoot应用中不可或缺的部分,它连接了整个自动配置的流程,让开发者能够以最小的配置代价启动和运行Spring应用。

3. 起步依赖简化项目构建

在SpringBoot的生态系统中,起步依赖(Starter POMs)扮演着至关重要的角色,它极大地简化了项目构建的过程。SpringBoot将常用的依赖进行分组,然后打包成一个单独的依赖项,便于开发者快速构建起一个项目的基础框架。本章我们将深入探讨起步依赖的原理以及如何在实践中应用它们。

3.1 起步依赖的原理

3.1.1 依赖管理与Maven父子项目

起步依赖的原理是基于Maven的依赖管理机制构建的。Maven是一种广泛使用的项目管理和构建工具,它通过一个名为 pom.xml 的文件来管理项目中使用的库和插件。在SpringBoot项目中,通常会使用父项目来统一管理依赖版本和提供构建配置的继承。

  • 父项目结构 :SpringBoot使用了一个特定的父项目结构,其中定义了一组默认的构建配置和依赖管理。这允许子项目继承这些设置,而不需要在每个单独的模块中重复配置。
  • 依赖的版本管理 :在父 pom.xml 中,通常会定义一系列的依赖项及其版本号。子模块在引入特定的起步依赖时,不需要再指定版本号,因为Maven会自动查找并使用父项目中定义的版本。

3.1.2 版本控制和依赖冲突解决

随着项目规模的增长,不同库之间可能存在版本冲突的问题。SpringBoot在管理依赖时,会尽可能地解决这些潜在的冲突。

  • 版本范围 :起步依赖在定义时通常会指定一个版本范围,Maven会选择最高版本的依赖来满足项目需求,同时遵循语义化版本控制规则。
  • 依赖排除和解决 :如果自动选择的版本无法满足特定需求,开发者可以通过Maven的依赖排除机制来显式地排除某些依赖项。另外,SpringBoot还使用了 spring-boot-starter-parent 的继承结构来优化依赖的解析。

3.2 起步依赖的实践

3.2.1 Web起步依赖的配置与理解

当你创建一个SpringBoot Web应用时,通常会引入SpringBoot提供的Web起步依赖。

  • 引入起步依赖
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  • 依赖项解释 :这个起步依赖本身包含了多个依赖,如Spring Web MVC、Tomcat作为嵌入式的Servlet容器等。这样,一个Web应用所需的大量配置和依赖项就被极大地简化了。

3.2.2 数据访问起步依赖的配置与理解

数据访问同样是一个复杂的过程,但是通过SpringBoot的数据访问起步依赖,可以快速搭建起数据访问层。

  • 引入数据访问起步依赖
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
</dependencies>
  • 依赖项解释 :该依赖集成了Spring Data JPA和Hibernate,为开发者提供了数据访问的抽象层。通过简单的注解和接口定义,就能实现数据的增删改查操作。

在实践过程中,根据项目具体需求,你可以选择不同的起步依赖。SpringBoot官方提供了丰富多样的起步依赖,比如安全、测试、缓存等,每个起步依赖都会涵盖相关的技术栈,简化开发者的配置工作。

接下来,我们将详细介绍如何在Eclipse IDE中进行SpringBoot项目的设置,这是开发人员日常工作中不可或缺的一部分。

4. Eclipse IDE中SpringBoot项目设置

4.1 Eclipse环境搭建

4.1.1 安装SpringBoot插件

为了在Eclipse中高效开发SpringBoot项目,安装SpringBoot插件是非常必要的。SpringBoot插件为Eclipse带来了许多对SpringBoot友好的特性,如快速创建项目、自动配置识别、SpringBoot特定的运行配置等。

在Eclipse中安装SpringBoot插件可以分为以下步骤:

  • 打开Eclipse,选择 Help > Eclipse Marketplace...
  • 在弹出的窗口中搜索 Spring Tools Suite ,选择合适的版本,点击 Install 进行安装。
  • 安装完成后,重启Eclipse以应用插件。

安装完成后,SpringBoot插件会添加以下功能:

  • Spring Boot Dashboard,用于显示和管理所有SpringBoot项目。
  • Spring Initializr集成,可以直接在Eclipse中创建SpringBoot项目。
  • 项目运行配置的自动生成和管理。

4.1.2 设置Eclipse以支持SpringBoot

安装插件之后,需要对Eclipse进行一些设置以优化SpringBoot开发体验:

  • 为Java版本配置Maven,确保SpringBoot插件可以使用正确的Java版本编译项目。可以通过 Window > Preferences > Java > Compiler 设置Java编译器的级别。
  • 调整Maven设置,以支持更快的构建过程。在 Window > Preferences > Maven > Installations 中,可以添加或配置Maven安装,确保它指向本地Maven的路径。
  • 使用 Window > Preferences > Spring > Starters 来配置SpringBoot项目中默认的启动器依赖。

4.2 SpringBoot项目配置

4.2.1 创建SpringBoot项目

创建SpringBoot项目的步骤相对简单。在安装了SpringBoot插件的Eclipse中:

  • 选择 File > New > Spring Starter Project
  • 在向导中,填写项目名称并选择需要的SpringBoot版本。
  • 选择需要的依赖,例如Spring Web、Spring Data JPA等。
  • 点击 Finish ,Eclipse将根据所选的依赖自动生成一个SpringBoot项目。

4.2.2 配置项目结构和运行配置

SpringBoot项目的结构通常遵循一定的约定:

  • src/main/java :存放项目的源代码。
  • src/main/resources :存放资源文件,如 application.properties application.yml
  • src/test/java :存放测试代码。

在Eclipse中为SpringBoot项目配置运行配置的步骤:

  • 右键点击项目,在弹出菜单中选择 Run As > Run Configurations...
  • 在运行配置对话框中,选择 Spring Boot App
  • Main class 中填写或选择主应用类。
  • 点击 Apply 然后 Run ,Eclipse将会启动SpringBoot应用。

使用这种方式,你可以快速启动并测试你的应用,而无需每次都手动输入启动命令。

4.2.3 在Eclipse中运行SpringBoot应用

在Eclipse中运行SpringBoot应用,可以通过启动配置来完成。当你创建了上述的 Spring Boot App 运行配置后,可以使用以下步骤来运行你的应用:

  1. 在Eclipse的工具栏中,通常会有一个绿色的播放按钮,旁边有一个下拉菜单。
  2. 从下拉菜单中选择你之前创建的SpringBoot项目运行配置。
  3. 点击播放按钮,Eclipse会使用你设置的配置参数启动SpringBoot应用。

运行配置也可以用来调试应用。在需要调试时,你可以在运行配置对话框中切换到 Debug 模式,然后启动你的应用。Eclipse会自动停在设置了断点的位置,让你可以逐步执行代码并查看变量的值。

4.2.4 调试技巧和问题定位

在Eclipse中调试SpringBoot应用时,以下技巧有助于提高效率和问题定位:

  • 使用断点来暂停执行,查看变量的实时值。
  • 使用监视窗口来观察特定变量的值。
  • 使用执行栈来查看当前调用的方法。
  • 使用变量视图来查看线程局部变量或实例字段。

当遇到错误或异常时,SpringBoot项目通常会在控制台输出异常堆栈跟踪,你可以根据异常类型和信息来定位问题。Eclipse的搜索功能也可以用来快速找到抛出异常的代码位置。

此外,可以使用Eclipse的分析器工具来分析内存使用和性能问题。通过 Profile As > Profile 功能,你可以启动应用并实时监控其性能表现,从而识别潜在的瓶颈或错误。

5. Web应用创建与HTTP服务处理

Web应用是当今互联网的基础,而SpringBoot以其简洁和高效的特性,成为了构建Web应用的流行框架之一。本章将深入探讨如何在SpringBoot中创建Web应用,以及如何处理HTTP服务。

5.1 SpringBoot中的Web支持

SpringBoot提供了一系列强大的工具来帮助开发者快速搭建Web应用。这包括内嵌的服务器支持、自动配置的Spring MVC以及各种RESTful服务的构建工具。

5.1.1 创建一个简单的Web应用

创建一个SpringBoot Web应用非常简单,通过Spring Initializr(https://start.spring.io/)可以快速生成项目结构,并引入Web起步依赖。以下是一个简单的SpringBoot Web应用的基本结构:

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

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

@RestController
class HelloController {

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

在这个例子中, @SpringBootApplication 注解标记了应用的入口点并启用了自动配置。 @RestController 注解的 HelloController 类定义了一个处理HTTP GET请求的端点,响应字符串”Hello, World!”。

5.1.2 Spring MVC在SpringBoot中的应用

Spring MVC是构建Web应用的Spring框架的一部分。在SpringBoot中,Spring MVC被自动配置,这意味着开发者无需手动配置大量的bean和Servlet。以下是一个典型的控制器的定义:

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

@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/users")
    public String getUsers() {
        // 调用服务层获取用户列表并转换为JSON
        return ...;
    }
}

在这个例子中, @RestController 注解表明该类是控制器,并且其方法的返回值会被自动转换为JSON或XML格式。 @RequestMapping 注解定义了类级别的映射路径,并且 @GetMapping 注解指定该方法处理来自”/api/users”的GET请求。

5.2 HTTP请求处理机制

SpringBoot中处理HTTP请求的机制是灵活且强大的。它不仅支持Spring MVC的所有特性,还通过自动配置简化了许多复杂的配置工作。

5.2.1 控制器的创建与映射

控制器(Controller)是处理用户请求的主要组件。通过注解,如 @GetMapping , @PostMapping , @PutMapping 等,可以非常容易地定义请求映射。

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/products")
public class ProductController {

    @PostMapping
    public String addProduct(@RequestBody Product product) {
        // 添加产品逻辑
        return "Product added: " + product.getName();
    }
}

在这个例子中, @PostMapping 注解表明 addProduct 方法处理HTTP POST请求。 @RequestBody 注解将请求体中的JSON数据映射到 Product 对象。

5.2.2 静态资源的处理和服务端渲染

在Web应用中,静态资源的处理是必不可少的。SpringBoot自动配置可以很好地处理静态资源,如图片、JavaScript文件和CSS样式表。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
                .addResourceLocations("/static/");
    }
}

在这个配置类中, WebMvcConfigurer 接口允许我们自定义静态资源的处理规则。 addResourceHandler 方法定义了一个资源处理器,将所有访问 /static/** 路径的请求映射到应用程序中的 /static/ 目录。

至于服务端渲染(SSR),SpringBoot通常不直接提供SSR支持,但可以通过集成模板引擎如Thymeleaf来实现。这种情况下,控制器负责准备模型数据,模板引擎负责渲染视图。

import org.thymeleaf.spring5.SpringTemplateEngine;
import org.thymeleaf.spring5.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ITemplateResolver;
// ...

@Bean
public ThymeleafViewResolver viewResolver(ITemplateResolver templateResolver, SpringTemplateEngine templateEngine) {
    ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
    viewResolver.setTemplateEngine(templateEngine);
    viewResolver.setOrder(1);
    viewResolver.setCharacterEncoding("UTF-8");
    return viewResolver;
}

@Bean
public SpringTemplateEngine templateEngine(ITemplateResolver templateResolver) {
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.setTemplateResolver(templateResolver);
    return templateEngine;
}

// 控制器示例
@GetMapping("/home")
public String home() {
    return "home"; // 返回的是模板名称,不包含文件扩展名
}

上述代码定义了一个 ThymeleafViewResolver 来处理模板渲染,并通过控制器返回模板名称来进行服务端渲染。

整个Web应用创建与HTTP服务处理的过程,不仅体现了SpringBoot框架的简洁性与强大功能,也展示了它在实际开发中的高效与便捷。从创建Web应用的基本结构,到深入探讨Spring MVC在SpringBoot中的应用,再到理解HTTP请求的处理机制和静态资源的处理,每一部分都紧密相连,形成一个有机的整体。这确保了开发者可以快速上手,构建出高性能、易于维护的Web应用。

6. SpringBoot应用的运行与打包

在构建和配置好SpringBoot应用之后,最重要的一步便是运行和打包部署。本章节将详细介绍如何在Eclipse IDE中启动SpringBoot应用,进行调试,以及如何将应用打包成JAR或WAR文件,并部署到不同的运行环境。

6.1 应用的运行和调试

6.1.1 在Eclipse中运行SpringBoot应用

在Eclipse中运行SpringBoot应用是一个简单且直观的过程,但是了解背后的运行机制可以帮助我们更好地调试和优化应用。

  1. 创建运行配置(Run Configuration)
    - 在Eclipse中右键点击项目,选择 Run As -> Run Configurations
    - 在打开的窗口中,选择 Java Application
    - 点击新建按钮,配置你的主应用类(带有 @SpringBootApplication 注解的类)。
    - 应用并运行配置。

  2. 启动应用并监控
    - 启动应用后,Eclipse的控制台将显示启动日志,可以监控到SpringBoot应用启动过程中加载的配置和Bean。
    - 使用 localhost 和端口号(默认是 8080 ),可以通过浏览器访问应用。

  3. 热部署
    - 利用Eclipse的热部署功能可以在不重启应用的情况下更新代码。在运行配置中启用 Allow app to be launched without synchronization 选项,并确保使用Maven或Gradle进行项目构建时启用相应的热部署插件。

6.1.2 调试技巧和问题定位

SpringBoot应用的调试过程是开发中不可缺少的一环。一些调试技巧如下:

  • 设置断点 :在Eclipse中打开你想要调试的Java类文件,并在代码行号旁点击,设置断点。
  • 查看变量状态 :在调试视图中,可以查看和修改变量的值。
  • 使用Step功能 :使用Step Into, Step Over和Step Return来逐步执行代码。
  • 监控日志 :SpringBoot提供了一个方便的日志系统。通过设置不同的日志级别,可以详细地监控应用的行为。

6.2 应用的打包与部署

6.2.1 打包成JAR或WAR文件

SpringBoot支持两种打包方式:JAR和WAR。对于大多数独立部署的应用,JAR是最常用的格式,而WAR适用于传统的Web容器部署。

  1. 生成可执行JAR文件
    - 在项目根目录运行以下Maven命令:
    shell mvn clean package
    - 执行成功后,会在 target 目录下生成一个包含所有依赖的可执行JAR文件。

  2. 生成WAR文件
    - 在 pom.xml 文件中指定打包方式为 war
    - 在Java类上使用 @SpringBootApplication 注解,而不是 @SpringBootConfiguration
    - 运行 mvn clean package 生成WAR文件。

6.2.2 部署到不同的运行环境

部署SpringBoot应用到不同的环境,包括开发、测试、生产环境,需要考虑不同的配置和部署策略。

  1. 配置文件的使用
    - 使用 application-{profile}.properties application-{profile}.yml 来创建不同环境下的配置文件。
    - 根据激活的Profile,应用会加载相应的配置文件。

  2. 部署策略
    - 容器化部署 :将应用打包成Docker镜像,并部署到容器化平台如Kubernetes。
    - 传统部署 :将WAR文件部署到支持Servlet的Web服务器如Tomcat中。
    - 云部署 :使用云服务提供商如AWS、Azure或阿里云进行部署。

  3. 持续集成/持续部署 (CI/CD)
    - 构建自动化流程,使用Jenkins、GitLab CI等工具,将源代码推送到仓库后自动构建和部署。

以上便是关于SpringBoot应用的运行与打包的详细指导。通过这些步骤,我们能够有效地管理和部署我们的SpringBoot应用到不同的环境中,无论是本地开发还是生产环境。在下一章节中,我们将深入探讨如何进一步优化和监控SpringBoot应用。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:SpringBoot是一个简化Spring应用开发的轻量级框架,利用自动配置和起步依赖来简化项目搭建。本入门工程案例特别针对Eclipse IDE进行设计,帮助初学者快速理解SpringBoot的核心概念和工作原理。案例涵盖了自动配置、起步依赖、Eclipse集成、Web应用示例、Web MVC框架、模板引擎、配置文件使用、日志系统、应用打包及运行,以及健康检查与Actuator监控等关键实践。


本文还有配套的精品资源,点击获取
menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值