我有一個問題:將存盤庫 bean 放在外包裝中時找不到它。它會導致嵌套UnsatisfiedDependencyException,這是由于NoSuchBeanDefinitionException(預計至少有 1 個 bean 有資格作為自動裝配候選者)。將課程復制到我的專案后,它可以完美運行。但我想將它用作對外部模塊的依賴。這是存盤庫類:
@Repository
public interface PersonRepository extends ReactiveMongoRepository<Person, String> {
}
以及專案中應該使用存盤庫的類:
@Configuration
@ComponentScan("outer.package.repository")
@EnableMongoRepositories(basePackages = {
"outer.package.repository"
//"local.package.repository" // temporary solution, should be external
})
public class MyConfig {
}
@Service
@RequiredArgsConstructor
public class PersonService {
private final PersonRepository personRepository;
// do some stuff
}
@Repository如您所見,我在 beans ( , @Service, )上有所有需要的注釋@Configuration,我注冊了 mongo 存盤庫 ( @EnableMongoRepositories) 甚至提供了要掃描的目錄 ( @ComponentScan)。你有什么我錯過的想法嗎?
UPD:我使用的是 maven,專案結構是這樣的:
src
main
java
com
example
configuration
MyConfig.java
controller
PersonController.java
repository
PersonRepository.java
service
PersonService.java
MainApplication.java
resources
test
pom.xml
uj5u.com熱心網友回復:
我試圖重現這個問題,似乎改變了注釋
@EnableMongoRepositories(basePackages = {
"outer.package.repository"
//"local.package.repository" // temporary solution, should be external
})
public class MyConfig {}
到它的反應等價物:
@EnableReactiveMongoRepositories(basePackages = {
"outer.package.repository"
//"local.package.repository" // temporary solution, should be external
})
public class MyConfig {}
解決了這個問題。更多資訊在檔案中
MongoDB 使用兩種不同的驅動程式來進行命令式(同步/阻塞)和反應式(非阻塞)資料訪問。您必須使用 Reactive Streams 驅動程式創建連接,以提供 Spring Data 的 Reactive MongoDB 支持所需的基礎設施。因此,您必須為 MongoDB 的 Reactive Streams 驅動程式提供單獨的配置。請注意,如果您使用回應式和阻塞式 Spring Data MongoDB 模板和存盤庫,則您的應用程式在兩個不同的連接上運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/495017.html
