当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring-Boot配置来配置JOOQ设置?

艾志尚
2023-03-14

但是如果我让Spring Boot自动配置JOOQ,那么我应该把这个设置放在哪里呢?

基本的Spring Boot配置似乎只支持在application.properties中设置spring.jooq.sql-dialect,如jooq-spring-boot-example所示。

我尝试将spring.jooq.rendernamestyle=as_is放入application.properties中,但这对SQL没有任何影响。

有没有办法自定义Spring boot JOOQ配置,而不必自己配置JOOQ?

我使用的是SpringBoot 2.1.7.Release和JOOQ 3.11.12。

共有1个答案

庞阳波
2023-03-14

注意,Lukas的答案用于配置呈现样式,但导致jooq不再参与Spring事务处理。

下面是我为自定义标识符呈现而添加到我的项目中的代码。

import org.jooq.DSLContext;
import org.jooq.SQLDialect;
import org.jooq.conf.RenderNameStyle;
import org.jooq.conf.Settings;
import org.jooq.impl.DataSourceConnectionProvider;
import org.jooq.impl.DefaultConfiguration;
import org.jooq.impl.DefaultDSLContext;
import org.jooq.impl.DefaultExecuteListenerProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.jooq.JooqExceptionTranslator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
import org.springframework.stereotype.Component;

import javax.sql.DataSource;


/**
 Override spring-boot config so JOOQ settings can be customised.
 See: https://stackoverflow.com/q/57542573/924597

 Spring-boot config taken from:
 https://github.com/eugenp/tutorials/blob/master/spring-jooq/src/test/java/com/baeldung/jooq/springboot/InitialConfiguration.java
*/
@Component
@Configuration
public class JooqConfig {
  @Autowired DataSource dataSource;

  @Bean
  public DataSourceConnectionProvider connectionProvider() {
    return new DataSourceConnectionProvider(
      new TransactionAwareDataSourceProxy(dataSource));
  }

  @Bean
  public DSLContext dsl() {
    return new DefaultDSLContext(configuration());
  }

  public DefaultConfiguration configuration() {
    DefaultConfiguration config = new DefaultConfiguration();
    config.set(connectionProvider());
    config.set(SQLDialect.POSTGRES);
    config.set(new Settings().
      withRenderNameStyle(RenderNameStyle.AS_IS ));
    config.set(new DefaultExecuteListenerProvider(
      new JooqExceptionTranslator() ));
    return config;
  }
}

注意:上面的代码似乎可以工作,但导致我的IDE告诉我,我有多个bean为DSLContext类型注册。我还将jooqautoconfigration添加到排除的spring-bootauto-config列表中。

@EnableAutoConfiguration(exclude = {
  SecurityAutoConfiguration.class,
  DataSourceAutoConfiguration.class,
  JooqAutoConfiguration.class
})
 类似资料:
  • 这段配置通过上下文进行扫描--我用调试器检查了它。问题可能出在哪里?

  • 我有两个环境来设置我的API,所以我有生产和开发。我首先需要的是找到一种方法来自动完成这一任务,例如,在运行时,不发送任何参数(-d)应用程序找到了一种方法来识别环境,但我没有找到任何方法来完成这一任务。 所以我看了一个教程,在同样有一个方法放了一个环境变量,并定义了我的application.properties。所以在下面的步骤中: > 我在我的应用程序中定义了3个文件,application

  • 我有、和 我正在使用maven命令它不起作用,并且我无法使用选择开发配置文件。如何选择? 文档中说可以工作,我尝试了但没有工作。在我的项目中,我使用它运行,但是如果我使用选择dev配置文件,控制台会打印这么多日志并警告我从来没有看到使用过,并告诉我 那么如何解决两个问题呢?谢谢~

  • 问题内容: 我有一个我认为非常简单的Spring MVC设置。我的applicationContext.xml是这样的: 我的web.xml当前是这样的: 我正在尝试将此设置转换为基于Java的纯配置。我已经在网上搜索过,到目前为止,我已经提出了一些东西(这些东西可以解释)如何进行Java配置,但是没有解释如何在环境(即Web上下文)中注册该Java配置。 到目前为止,我对@Configurati

  • 问题内容: 我有一个使用maven作为构建工具的应用程序。 我正在使用Maven配置文件从不同的配置文件设置不同的属性。 我想做的是将maven中的所有活动配置文件也移植到spring活动配置文件中,以便我可以在bean签名()中引用它们。但我不确定该怎么做。 例如:考虑以下Maven设置 假设我在未指定任何其他配置文件的情况下运行maven,而我希望spring具有和 配置为活动配置文件。 问题