在 Spring 引导中使用 hibernate-types-52 时如何禁用 Hypersistence 横幅?

How to disable the Hypersistence banner when using hibernate-types-52 in Spring Boot?

我在 Spring 引导项目中使用 com.vladmihalcea:hibernate-types-52 依赖项。而且,我注意到在应用程序启动时,添加了一些大日志消息:

2020-04-09 11:43:59.535  WARN 3465 --- [           main] Hypersistence Optimizer                  : You should use Hypersistence Optimizer to speed up your Hibernate application!
2020-04-09 11:43:59.535  WARN 3465 --- [           main] Hypersistence Optimizer                  : For more details, go to https://vladmihalcea.com/hypersistence-optimizer/
2020-04-09 11:43:59.536  INFO 3465 --- [           main] Hypersistence Optimizer                  : 
 _    _                           _     _
| |  | |                         (_)   | |
| |__| |_   _ _ __   ___ _ __ ___ _ ___| |_ ___ _ __   ___ ___
|  __  | | | | '_ \ / _ \ '__/ __| / __| __/ _ \ '_ \ / __/ _ \
| |  | | |_| | |_) |  __/ |  \__ \ \__ \ ||  __/ | | | (_|  __/
|_|  |_|\__, | .__/ \___|_|  |___/_|___/\__\___|_| |_|\___\___|
         __/ | |
        |___/|_|

           ____        _   _           _
          / __ \      | | (_)         (_)
         | |  | |_ __ | |_ _ _ __ ___  _ _______ _ __
         | |  | | '_ \| __| | '_ ` _ \| |_  / _ \ '__|
         | |__| | |_) | |_| | | | | | | |/ /  __/ |
          \____/| .__/ \__|_|_| |_| |_|_/___\___|_|
                | |
                |_|

提示很好,项目听起来很有趣,但仍想从我的应用程序中删除横幅。

项目所有者描述了引入横幅的原因、默认情况下不禁用它的原因以及如何手动禁用它。

How to remove the Hibernate Types banner

自动横幅移除模式

简而言之,您可以购买 Hypersistence Optimizer license 并将项目添加为依赖项,以便从 JPA 和 Hibernate 自动调整检查中获益。

手动删除横幅

或者您可以将 hibernate.propertieshibernate-types.properties 文件添加到您的项目中,其中一个 属性 可以禁用横幅:

hibernate.types.print.banner = false

或者,您可以将此 属性 作为 Java 系统 属性:

java -Dhibernate.types.print.banner=false -jar target/high-performance-java-persistence-1.0.0.jar

Spring开机

从 Hibernate 5.5 版本和 hibernate-types-55 依赖项开始,您现在可以在 application.properties 文件中提供 hibernate.types.print.banner 属性,如下所示:

spring.jpa.properties.hibernate.types.print.banner=false

If you're using hibernate-types-52 or older dependencies, then you won't be able to provide this setting via the Spring Boot application.properties file.

如果您无权访问 JVM 参数,则可以替代上述答案。

这两种方法都适用于 Spring 引导,已在 2.2.x.

上进行测试

选项 1:附加属性文件

src/main/resources/hibernate-types.properties 创建一个文件。

hibernate.types.print.banner=false

选项 2:破解 hibernate-types 检查

创建以下任一文件(取决于您的 hibernate-types 版本)。

最新的做事方式:src/main/java/io/hypersistence/optimizer/core/License.java

package io.hypersistence.optimizer.core;

public class License {
  public static class Signature {
  }
}

旧版本检查 src/main/java/io/hypersistence/optimizer/HypersistenceOptimizer.java

package io.hypersistence.optimizer;

public class HypersistenceOptimizer {
}

只需在日志配置文件中包含记录器名称和级别WARNERROR

log4j2 (log4j2.yml) 的示例:

configuration:
  Loggers:
    Logger:
      - name: Hibernate Types
        level: WARN

注意:Logger 的名字在这里很重要:Hibernate Types。测试 hibernate-types-52:2.9.13。其他版本也可以实现相同的效果,只需包含正确的记录器名称即可。可以在日志中找到记录器名称。