我正在尝试创建一个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。我不想一开始就创建它。
任何帮助都是受欢迎的。谢谢
1条答案
按热度按时间jdzmm42g1#
也许您可以在自定义ConnectionFactory Bean上使用@ConditionalOnMissingBean注解,以指示仅当应用程序上下文中不存在ConnectionFactory Bean时才应创建它。
或者您应该在您的自定义连接工厂上添加@Primary @Bean公共连接工厂连接工厂(){返回连接工厂.get(“r2 dbc:postgresql://test:test@localhost:5432/test”);}