@Repository未自动装配

时间:2018-03-02 11:56:42

标签: java spring jpa repository spring-data-jpa

我预计在这里检查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

任何帮助都非常感谢!!!

1 个答案:

答案 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

删除摘要,它应该可以正常工作。