Maven-lombok 的使用

本文介绍了Lombok的基本概念,它是一个通过注解简化Java代码的库。主要内容包括Lombok的作用,如何下载并引入到Eclipse中,以及在Maven项目中配置和使用Lombok的示例,特别提到了@Data注解用于自动生成getter、setter等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Lombok介绍以及优点

1.1 龙目岛:位于印度尼西亚西努沙登加拉省岛屿;

1.2 官网:https://projectlombok.org

1.3 作用:通过简单注解来精简代码达到消除冗长代码的目的;

lombok注解:(主要用@Data @Setter @toString @Getter @AllArgsConstructor提供有参的构造方法)

@Data 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Setter :注解在属性上;为属性提供 setting 方法
@Getter :注解在属性上;为属性提供 getting 方法
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor :注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor :注解在类上;为类提供一个全参的构造方法
@Cleanup : 可以关闭流
@Builder : 被注解的类加个构造者模式
@Synchronized : 加个同步锁
@SneakyThrows : 等同于try/catch 捕获异常
@NonNull : 如果给参数加个这个注解 参数为null会抛出空指针异常
@Value : 注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法。
@toString:注解在类上;为类提供toString方法(可以添加排除和依赖);
官方文档https://projectlombok.org/features/index.html

二、Lombok的使用
下载

C:\Users\Administrator\.jdks\ms-17.0.15\bin\java.exe -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" "-javaagent:C:\Users\Administrator\AppData\Local\Programs\IntelliJ IDEA Ultimate 2025.1.3\lib\idea_rt.jar=64325" -Dfile.encoding=UTF-8 -classpath C:\Users\Administrator\Desktop\考题示例\考题示例\demo\target\classes;D:\apache-maven-3.9.10\maven-repository\org\springframework\boot\spring-boot-starter-web\3.1.5\spring-boot-starter-web-3.1.5.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\boot\spring-boot-starter\3.1.5\spring-boot-starter-3.1.5.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\boot\spring-boot\3.1.5\spring-boot-3.1.5.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\boot\spring-boot-starter-logging\3.1.5\spring-boot-starter-logging-3.1.5.jar;D:\apache-maven-3.9.10\maven-repository\ch\qos\logback\logback-classic\1.4.11\logback-classic-1.4.11.jar;D:\apache-maven-3.9.10\maven-repository\ch\qos\logback\logback-core\1.4.11\logback-core-1.4.11.jar;D:\apache-maven-3.9.10\maven-repository\org\apache\logging\log4j\log4j-to-slf4j\2.20.0\log4j-to-slf4j-2.20.0.jar;D:\apache-maven-3.9.10\maven-repository\org\apache\logging\log4j\log4j-api\2.20.0\log4j-api-2.20.0.jar;D:\apache-maven-3.9.10\maven-repository\org\slf4j\jul-to-slf4j\2.0.9\jul-to-slf4j-2.0.9.jar;D:\apache-maven-3.9.10\maven-repository\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\spring-core\6.0.13\spring-core-6.0.13.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\spring-jcl\6.0.13\spring-jcl-6.0.13.jar;D:\apache-maven-3.9.10\maven-repository\org\yaml\snakeyaml\1.33\snakeyaml-1.33.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\boot\spring-boot-starter-json\3.1.5\spring-boot-starter-json-3.1.5.jar;D:\apache-maven-3.9.10\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.15.3\jackson-datatype-jdk8-2.15.3.jar;D:\apache-maven-3.9.10\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.15.3\jackson-datatype-jsr310-2.15.3.jar;D:\apache-maven-3.9.10\maven-repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.15.3\jackson-module-parameter-names-2.15.3.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\boot\spring-boot-starter-tomcat\3.1.5\spring-boot-starter-tomcat-3.1.5.jar;D:\apache-maven-3.9.10\maven-repository\org\apache\tomcat\embed\tomcat-embed-core\10.1.15\tomcat-embed-core-10.1.15.jar;D:\apache-maven-3.9.10\maven-repository\org\apache\tomcat\embed\tomcat-embed-el\10.1.15\tomcat-embed-el-10.1.15.jar;D:\apache-maven-3.9.10\maven-repository\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.15\tomcat-embed-websocket-10.1.15.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\spring-web\6.0.13\spring-web-6.0.13.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\spring-beans\6.0.13\spring-beans-6.0.13.jar;D:\apache-maven-3.9.10\maven-repository\io\micrometer\micrometer-observation\1.10.12\micrometer-observation-1.10.12.jar;D:\apache-maven-3.9.10\maven-repository\io\micrometer\micrometer-commons\1.10.12\micrometer-commons-1.10.12.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\spring-webmvc\6.0.13\spring-webmvc-6.0.13.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\spring-aop\6.0.13\spring-aop-6.0.13.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\spring-context\6.0.13\spring-context-6.0.13.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\spring-expression\6.0.13\spring-expression-6.0.13.jar;D:\apache-maven-3.9.10\maven-repository\com\alibaba\druid-spring-boot-starter\1.2.18\druid-spring-boot-starter-1.2.18.jar;D:\apache-maven-3.9.10\maven-repository\com\alibaba\druid\1.2.18\druid-1.2.18.jar;D:\apache-maven-3.9.10\maven-repository\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\boot\spring-boot-autoconfigure\1.5.22.RELEASE\spring-boot-autoconfigure-1.5.22.RELEASE.jar;D:\apache-maven-3.9.10\maven-repository\org\glassfish\jaxb\jaxb-runtime\2.3.2\jaxb-runtime-2.3.2.jar;D:\apache-maven-3.9.10\maven-repository\jakarta\xml\bind\jakarta.xml.bind-api\2.3.2\jakarta.xml.bind-api-2.3.2.jar;D:\apache-maven-3.9.10\maven-repository\org\glassfish\jaxb\txw2\2.3.2\txw2-2.3.2.jar;D:\apache-maven-3.9.10\maven-repository\com\sun\istack\istack-commons-runtime\3.0.8\istack-commons-runtime-3.0.8.jar;D:\apache-maven-3.9.10\maven-repository\org\jvnet\staxex\stax-ex\1.8.1\stax-ex-1.8.1.jar;D:\apache-maven-3.9.10\maven-repository\com\sun\xml\fastinfoset\FastInfoset\1.2.16\FastInfoset-1.2.16.jar;D:\apache-maven-3.9.10\maven-repository\jakarta\activation\jakarta.activation-api\1.2.1\jakarta.activation-api-1.2.1.jar;D:\apache-maven-3.9.10\maven-repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\3.0.3\mybatis-spring-boot-starter-3.0.3.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\boot\spring-boot-starter-jdbc\3.2.0\spring-boot-starter-jdbc-3.2.0.jar;D:\apache-maven-3.9.10\maven-repository\com\zaxxer\HikariCP\5.0.1\HikariCP-5.0.1.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\spring-jdbc\6.1.1\spring-jdbc-6.1.1.jar;D:\apache-maven-3.9.10\maven-repository\org\springframework\spring-tx\6.1.1\spring-tx-6.1.1.jar;D:\apache-maven-3.9.10\maven-repository\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\3.0.3\mybatis-spring-boot-autoconfigure-3.0.3.jar;D:\apache-maven-3.9.10\maven-repository\org\mybatis\mybatis\3.5.14\mybatis-3.5.14.jar;D:\apache-maven-3.9.10\maven-repository\org\mybatis\mybatis-spring\3.0.3\mybatis-spring-3.0.3.jar;D:\apache-maven-3.9.10\maven-repository\org\projectlombok\lombok\1.18.30\lombok-1.18.30.jar;D:\apache-maven-3.9.10\maven-repository\jakarta\enterprise\jakarta.enterprise.cdi-api\3.0.0\jakarta.enterprise.cdi-api-3.0.0.jar;D:\apache-maven-3.9.10\maven-repository\jakarta\el\jakarta.el-api\4.0.0\jakarta.el-api-4.0.0.jar;D:\apache-maven-3.9.10\maven-repository\jakarta\interceptor\jakarta.interceptor-api\2.0.0\jakarta.interceptor-api-2.0.0.jar;D:\apache-maven-3.9.10\maven-repository\jakarta\inject\jakarta.inject-api\2.0.0\jakarta.inject-api-2.0.0.jar;D:\apache-maven-3.9.10\maven-repository\jakarta\ws\rs\jakarta.ws.rs-api\3.0.0\jakarta.ws.rs-api-3.0.0.jar;D:\apache-maven-3.9.10\maven-repository\jakarta\servlet\jakarta.servlet-api\5.0.0\jakarta.servlet-api-5.0.0.jar;D:\apache-maven-3.9.10\maven-repository\com\fasterxml\jackson\core\jackson-databind\2.15.3\jackson-databind-2.15.3.jar;D:\apache-maven-3.9.10\maven-repository\com\fasterxml\jackson\core\jackson-annotations\2.15.3\jackson-annotations-2.15.3.jar;D:\apache-maven-3.9.10\maven-repository\com\fasterxml\jackson\core\jackson-core\2.15.3\jackson-core-2.15.3.jar com.example.fundprofit.FundProfitApplication SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.helpers.NOPLoggerFactory loaded from file:/D:/apache-maven-3.9.10/maven-repository/org/slf4j/slf4j-api/1.7.26/slf4j-api-1.7.26.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.helpers.NOPLoggerFactory at org.springframework.util.Assert.instanceCheckFailed(Assert.java:713) at org.springframework.util.Assert.isInstanceOf(Assert.java:632) at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext(LogbackLoggingSystem.java:394) at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:124) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:238) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:220) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:174) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:145) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:133) at org.springframework.boot.context.event.EventPublishingRunListener.multicastInitialEvent(EventPublishingRunListener.java:136) at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:75) at org.springframework.boot.SpringApplicationRunListeners.lambda$starting$0(SpringApplicationRunListeners.java:54) at java.base/java.lang.Iterable.forEach(Iterable.java:75) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:54) at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) at com.example.fundprofit.FundProfitApplication.main(FundProfitApplication.java:11) 进程已结束,退出代码为 1 请给出解释并给出解决方法
最新发布
07-13
<think>我们正在解决Spring Boot应用启动时出现的日志框架冲突问题,具体错误是: "LoggerFactory is not a Logback LoggerContext but Logback is on the classpath" 根据引用[1][2][3]中的信息,这个错误的原因是项目中存在多个日志实现(比如Logback和Log4j2),导致SLF4J无法正确绑定到单一的日志实现上。Spring Boot默认使用Logback,但如果有其他日志实现也被引入,就会产生冲突。 解决思路主要是排除多余的日志依赖,确保只有一个日志实现。 具体步骤: 1. **检查依赖树**:使用Maven命令查看依赖树,找出冲突的日志依赖。 ```bash mvn dependency:tree ``` 在输出中查找与日志相关的依赖,特别是`log4j-slf4j-impl`(引用[2]中提到的)和`logback-classic`等。 2. **排除冲突的依赖**:在引入的依赖中排除多余的日志实现。例如,引用[4]中展示了如何排除`slf4j-simple`,同样我们可以排除其他冲突的日志实现。 假设我们发现某个依赖引入了`log4j-slf4j-impl`(它提供了Log4j2的SLF4J绑定),而我们希望使用Logback,那么可以在该依赖中排除它: ```xml <dependency> <groupId>com.example</groupId> <artifactId>some-artifact</artifactId> <version>1.0.0</version> <exclusions> <exclusion> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> </exclusion> </exclusions> </dependency> ``` 同样,如果项目中直接引入了多个日志实现的依赖,比如同时有`logback-classic`和`log4j-slf4j-impl`,那么需要移除其中一个。 3. **确保使用Spring Boot的日志启动器**:Spring Boot的starter已经包含了Logback的依赖管理。通常我们只需要: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> ``` 这个starter会引入`spring-boot-starter-logging`,它默认使用Logback。注意不要引入`spring-boot-starter-log4j2`(除非你想用Log4j2)。 4. **检查其他依赖的传递依赖**:有时候,第三方库会传递引入其他日志实现。例如,引用[4]中排除了`dashscope-sdk-java`中的`slf4j-simple`。同样,我们需要检查并排除类似的冲突依赖。 5. **清理和重新构建**:在排除依赖后,执行Maven的clean和install,确保依赖被正确更新。 6. **如果切换日志框架**:如果确实想使用Log4j2而不是Logback,那么需要: - 排除`spring-boot-starter-logging` - 引入`spring-boot-starter-log4j2` ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> ``` 根据引用[1]中用户的依赖,他们引入了: - spring-boot-starter-web - spring-boot-starter-thymeleaf - HikariCP 这些依赖都可能传递引入日志依赖。但Spring Boot的starter已经管理了日志依赖,所以正常情况下不会有冲突。但是,如果用户额外添加了其他日志依赖(比如Log4j2的依赖)或者第三方库带来了冲突,就会导致问题。 因此,我们首先检查依赖树,排除冲突。 **解决方案示例(使用Logback)**: 在pom.xml中,对于引入冲突日志实现的依赖进行排除。例如,如果发现HikariCP传递引入了其他日志实现(但通常不会),我们可以排除它。但是,根据错误信息(引用[2]),冲突的是`log4j-slf4j-impl`,所以我们在整个项目中查找这个依赖并排除。 假设在依赖树中看到`log4j-slf4j-impl`是通过某个依赖引入的,比如: ```xml <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.15.0</version> </dependency> ``` 那么我们需要排除它。如果它不是直接依赖,而是通过其他依赖传递进来的,就在那个依赖中排除。 例如,在引用[4]中,用户排除了`dashscope-sdk-java`中的`slf4j-simple`。同样,我们可以类似地排除`log4j-slf4j-impl`。 如果找不到具体是哪个依赖引入的,可以在整个项目的依赖中排除: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>3.0.9</version> <exclusions> <!-- 排除log4j的SLF4J绑定 --> <exclusion> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> </exclusion> </exclusions> </dependency> <!-- 同样,对其他可能有传递依赖的进行排除 --> ``` 另外,引用[1]中提到添加`slf4j-api`依赖,但实际上Spring Boot的starter已经包含了SLF4J API,所以不需要额外添加版本。如果添加,注意版本要与Spring Boot管理的版本一致。 **总结步骤**: 1. 运行`mvn dependency:tree`,查找冲突的日志依赖(如`log4j-slf4j-impl`, `slf4j-simple`等)。 2. 在引入冲突依赖的库中,使用`<exclusion>`排除。 3. 确保没有显式引入多个日志实现的依赖。 4. 如果使用Logback,确保没有引入`spring-boot-starter-log4j2`。 5. 重新构建项目。 如果按照上述步骤排除后,问题仍然存在,可能需要检查是否有多个版本的SLF4J API,因为不同的日志实现需要匹配特定版本的SLF4J API。Spring Boot已经管理了这些版本,所以通常排除冲突的日志实现即可。 最后,注意引用[1]中用户自己添加了`slf4j-api`依赖,但版本为2.0.16。而Spring Boot 3.0.9使用的SLF4J版本可能是2.0.7(需要查看Spring Boot 3.0.9的父pom),所以如果用户自己指定了版本,可能会引起问题。建议不要单独引入`slf4j-api`,因为Spring Boot已经包含。 因此,如果用户按照引用[1]添加了: ```xml <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.16</version> </dependency> ``` 应该移除这个依赖,使用Spring Boot管理的版本。 **最终建议**: 1. 移除用户自己添加的`slf4j-api`依赖(如果只是为了解决这个问题而添加的)。 2. 排除冲突的日志实现依赖(如`log4j-slf4j-impl`)。 3. 清理并重新构建项目。 如果问题解决,则成功;如果仍然有问题,请再次检查依赖树,确保没有其他冲突。</think>### 解决 Spring Boot 日志框架冲突问题 #### 问题原因分析 根据引用[1][2][3],报错 `LoggerFactory is not a Logback LoggerContext but Logback is on the classpath` 的根本原因是: 1. **多个日志实现冲突**:项目中同时存在 Logback 和其他日志框架(如 Log4j2)[^3] 2. **SLF4J 绑定失败**:SLF4J 日志门面检测到多个日志实现,无法确定使用哪个[^2] 3. **依赖传递冲突**:第三方依赖(如引用[4]中的 dashscope-sdk-java)可能引入了冲突的日志实现[^4] #### 解决方案(逐步操作) ##### 1. 排除冲突的日志依赖 在 `pom.xml` 中排除冲突的日志实现: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <!-- 排除冲突的日志实现 --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <!-- 对其他starter做同样排除 --> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>6.3.0</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> ``` ##### 2. 显式声明日志依赖(二选一) **方案A:使用 Logback(Spring Boot 默认)** ```xml <!-- 显式引入Logback --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.4.7</version> </dependency> ``` **方案B:使用 Log4j2(需完全切换)** ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> ``` ##### 3. 检查第三方依赖冲突 针对引用[4]中的 dashscope-sdk-java 等第三方依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>dashscope-sdk-java</artifactId> <version>${com.alibaba-dashscope-sdk-java}</version> <exclusions> <!-- 排除冲突的日志实现 --> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> </exclusion> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> ``` ##### 4. 验证依赖树 使用 Maven 命令检查依赖冲突: ```bash mvn dependency:tree -Dincludes=*log*,*slf4j* ``` 输出中应只保留 **一个** 日志实现绑定(如 logback-classic 或 log4j-core) ##### 5. 清理并重启 ```bash mvn clean install ``` #### 关键配置点 1. **单一绑定原则**:SLF4J 要求项目只能有一个日志实现绑定[^3] 2. **依赖排除顺序**: ```mermaid graph LR A[项目] --> B(spring-boot-starter-web) A --> C(HikariCP) A --> D(第三方SDK) B -.排除.-> E[spring-boot-starter-logging] C -.排除.-> F[slf4j-api] D -.排除.-> G[slf4j-simple] ``` #### 预防措施 1. 在父 POM 中统一管理日志版本: ```xml <properties> <slf4j.version>2.0.7</slf4j.version> <logback.version>1.4.7</logback.version> </properties> ``` 2. 使用 `mvn dependency:analyze` 定期检查依赖冲突 > **注意**:Spring Boot 3.x 默认使用 Logback,如无特殊需求建议保持默认配置,只需排除冲突即可[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值