spring Sping Boot 禁用R2dbcAutoConfiguration

7rfyedvj  于 2022-12-10  发布在  Spring
关注(0)|答案(1)|浏览(277)

我正在尝试创建一个ConnectionFactory bean,所以我想禁用R2dbcAutoConfiguration
到目前为止,我尝试了以下方法:
@SpringBootApplication(exclude = R2dbcAutoConfiguration.class)

@EnableAutoConfiguration(exclude = R2dbcAutoConfiguration.class)
但是它们都不起作用,因为ConnectionFactory仍然在PooledConnectionFactoryConfiguration处在ConnectionFactoryConfigurations上被创建。
正因为如此,我得到了这个错误:
无法注册在类路径资源[com/example/config/CustomR2dbcAutoConfiguration.class]中定义的Bean 'connectionFactory'。已在类路径资源[org/springframework/ Boot /autoconfigure/r2 dbc/连接工厂配置$PoolConfiguration$PooledConnectionFactoryConfiguration.class]中定义了具有该名称的Bean,并且已禁用覆盖。

@EnableConfigurationProperties( R2dbcProperties.class )
@ConditionalOnResource( resources = "classpath:META-INF/services/io.r2dbc.spi.ConnectionFactoryProvider" )
@EnableAutoConfiguration( exclude = { R2dbcAutoConfiguration.class } )
public class CustomR2dbcAutoConfiguration
{
    @Bean
    public ConnectionFactory connectionFactory()
    {
        return ConnectionFactories.get( "r2dbc:postgresql://test:test@localhost:5432/test" );
    }
}

我不想覆盖bean。我不想一开始就创建它。
任何帮助都是受欢迎的。谢谢

jdzmm42g

jdzmm42g1#

也许您可以在自定义ConnectionFactory Bean上使用@ConditionalOnMissingBean注解,以指示仅当应用程序上下文中不存在ConnectionFactory Bean时才应创建它。
或者您应该在您的自定义连接工厂上添加@Primary @Bean公共连接工厂连接工厂(){返回连接工厂.get(“r2 dbc:postgresql://test:test@localhost:5432/test”);}

相关问题