但是如果我让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。
注意,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-boot
auto-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具有和 配置为活动配置文件。 问题