我预计在这里检查GitHub https://github.com/romeoopk/demo 请注意,这不是一个完整的"工作项目但正在进行中!
我有两个数据源(h2 mem DB和Cassandra) 该项目的目的是隐藏服务背后的实施。
我正在反对的两个档案
dev - 反对h2
测试 - 反对Cassandra
当我对测试运行时,它运行正常,但是当我对开发运行时,我收到以下消息
com.example.demo.service.H2HotelServiceImpl中构造函数的参数0需要一个类型为' com.example.demo.repository.HotelRepository'的bean。无法找到。
动作:
考虑定义一个类型为' com.example.demo.repository.HotelRepository'的bean。在你的配置中。
我不确定,如何正确注入,以便H2HotelRepository和H2HotelByLetterRepository用于查询H2
任何帮助都非常感谢!!!
答案 0 :(得分:0)
cassandra文件夹下的存储库类是这样的
@Repository
@Profile("test")
public class CassandraHotelRepository implements HotelRepository<Hotel> {
....
}
@Repository
@Profile("test")
public class CassandraHotelByLetterRepository implements HotelByLetterRepository<HotelByLetter, HotelByLetterKey> {
....
}
但是在您的h2文件夹中,您已声明为
@Repository
@Profile("dev")
public abstract class H2HotelRepository implements CrudRepository<Hotel, String>, HotelRepository<Hotel> {
...
}
@Repository
@Profile("dev")
public abstract class H2HotelByLetterRepository implements CrudRepository<HotelByLetter, HotelByLetterKey>, HotelByLetterRepository<HotelByLetter, HotelByLetterKey> {
.....
}
正如您可以在h2文件夹中清楚地看到的那样,即对于配置文件dev,没有具体的类。 h2下的两个存储库都是abstract
。
删除摘要,它应该可以正常工作。