class DefaultJdbcReactiveExecutor extends JdbcReactiveSqlExecutor {
    @Autowired
    private DataSource dataSource;

    protected String getDatasourceId() {
        return DataSourceHolder.switcher().datasource().current().orElse("default");
    }

    private Tuple2<DataSource, Connection> getDataSourceAndConnection() {<FILL_FUNCTION_BODY>}

    @Override
    public Mono<Connection> getConnection() {
        return Mono
                .using(
                        this::getDataSourceAndConnection
                        ,
                        tp2 -> Mono.just(tp2.getT2()),
                        tp2 -> DataSourceUtils.releaseConnection(tp2.getT2(), tp2.getT1()),
                        false
                );
    }

    @Override
    @Transactional(transactionManager = TransactionManagers.reactiveTransactionManager,readOnly = true)
    public <E> Flux<E> select(String sql, ResultWrapper<E, ?> wrapper) {
        return super.select(sql,wrapper);
    }

    @Override
    @Transactional(transactionManager = TransactionManagers.reactiveTransactionManager,rollbackFor = Throwable.class)
    public Mono<Integer> update(Publisher<SqlRequest> request) {
        return super.update(request);
    }

    @Override
    @Transactional(transactionManager = TransactionManagers.reactiveTransactionManager,rollbackFor = Throwable.class)
    public Mono<Integer> update(String sql, Object... args) {
        return super.update(sql,args);
    }

    @Override
    @Transactional(transactionManager = TransactionManagers.reactiveTransactionManager,rollbackFor = Throwable.class)
    public Mono<Integer> update(SqlRequest request) {
        return super.update(request);
    }

    @Override
    @Transactional(transactionManager = TransactionManagers.reactiveTransactionManager,rollbackFor = Throwable.class)
    public Mono<Void> execute(Publisher<SqlRequest> request) {
        return super.execute(request);
    }

    @Override
    @Transactional(transactionManager = TransactionManagers.reactiveTransactionManager,rollbackFor = Throwable.class)
    public Mono<Void> execute(SqlRequest request) {
        return super.execute(request);
    }
}

        DataSource dataSource = DataSourceHolder.isDynamicDataSourceReady() ?
                DataSourceHolder.currentDataSource().getNative() :
                this.dataSource;
        Connection connection = DataSourceUtils.getConnection(dataSource);
        boolean isConnectionTransactional = DataSourceUtils.isConnectionTransactional(connection, dataSource);
        if (log.isDebugEnabled()) {
            log.debug("DataSource ({}) JDBC Connection [{}] will {}be managed by Spring", getDatasourceId(), connection, (isConnectionTransactional ? "" : "not "));
        }
        return Tuples.of(dataSource, connection);
    
<no_super_class>