Spring boot Spring WebFlux+;Spring数据Jdbc+;春季会议Redis

Spring boot Spring WebFlux+;Spring数据Jdbc+;春季会议Redis,spring-boot,spring-data-redis,spring-data-jdbc,Spring Boot,Spring Data Redis,Spring Data Jdbc,我需要做一个链接到oracledb的反应式spring引导应用程序(我使用jdbc的一个例子,在非阻塞模式下转换它)。我需要使用SpringSessionRedis链接到redis服务器,从另一个应用程序获取属性。如果我添加spring会话redis dependecies,我就有错误。这就是错误: *************************** APPLICATION FAILED TO START *************************** Descriptio

我需要做一个链接到oracledb的反应式spring引导应用程序(我使用jdbc的一个例子,在非阻塞模式下转换它)。我需要使用SpringSessionRedis链接到redis服务器,从另一个应用程序获取属性。如果我添加spring会话redis dependecies,我就有错误。这就是错误:

    ***************************
APPLICATION FAILED TO START
***************************

Description:

Field pinRepository in com.creditInvoice.service.pinService required a bean of type 'com.creditInvoice.repository.PinRepository' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'com.creditInvoice.repository.PinRepository' in your configuration.
这是模型

@Data
@Table
public class Pin{
    
    @Id
    @JsonProperty("userCod")
    private String userCod;
    
    

    @JsonProperty("shopCod")
    private String shopCod;
    
    
    @JsonProperty("pin")
    private String pin;

    public String getUserCod() {
        return userCod;
    }

    public void setUserCod(String userCod) {
        this.userCod = userCod;
    }

    public String getShopCod() {
        return shopCod;
    }

    public void setShopCod(String shopCod) {
        this.shopCod = shopCod;
    }

    public String getPin() {
        return pin;
    }

    public void setPin(String pin) {
        this.pin = pin;
    }
    
    
}
这是存储库

@Repository
public interface PinRepository extends CrudRepository<Pin, String> {
    
    @Query(value="SELECT user_cod,shop_cod,pin FROM PIN WHERE USER_COD = :user AND SHOP_COD = :shop")
    Pin findByUserCodAndShopCod(@Param("user") String userCod, @Param("shop")String shopCod);
    
    

}
@Service
public class pinService {

    @Autowired
    private PinRepository pinRepository;
    
    @Autowired
    private TransactionTemplate transactionTemplate;
    
    @Autowired
    @Qualifier("jdbcScheduler")
    private Scheduler jdbcScheduler;
    
    public Mono<Pin> findByUserCodAndShopCod(String userCod, String shopCod ){
        Mono<Pin> pin = Mono
                .defer(() -> Mono.just(pinRepository.findByUserCodAndShopCod(userCod, shopCod)))
                .subscribeOn(jdbcScheduler);
        return pin;
    }
    
    public Flux<Pin> findAll(){
        Flux<Pin> pinList = Flux
                .defer(()-> Flux.fromIterable(pinRepository.findAll()))
                .subscribeOn(jdbcScheduler);
        return pinList;
    }
}
@SpringBootApplication
public class CreditInvoiceApplication {
    
    @Value ("${spring.datasource.maximum-pool-size:100}")
    private int connectionPoolSize;
    public static void main(String[] args) {
        SpringApplication.run(CreditInvoiceApplication.class, args);
    }
    
    @Bean
    public Scheduler jdbcScheduler() {
        return Schedulers.fromExecutor(Executors.newFixedThreadPool(connectionPoolSize));
    }

    @Bean
    public TransactionTemplate transactionTemplate(PlatformTransactionManager transactionManager) {
        return new TransactionTemplate(transactionManager);
    }
    
    
}