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