SpringBoot整合Mongodb启动发生“创建bean错误的原因“

关于SpringBoot整合Mongodb启动发生"创建bean错误的原因"

repository的代码样式如下:
package cn.xhc.springboot.mongodb.repository;

import java.util.List;

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.stereotype.Repository;

import cn.xhc.springboot.mongodb.model.MemberReadHistory;

@Repository
public interface MemberReadHistoryRepository extends MongoRepository<MemberReadHistory, String> {
	
	List<MemberReadHistory> findbyMemberIdOrderByCreateTimeDesc(Long memberId);
}

上面所写代码看似没有错误,但是这样导致此接口没有生成对应的bean,当此项目的service的实现类引用此接口时,service的是实现类就不会产生对应的bean,这样就导致此项目的controller层引用service层的接口的类也不会产生相应的bean,导致一连串的错误。

这种错误并不是代码写的本身有错误,而是缺少@Query注解

正确的格式应该是如下代码:
package cn.xhc.springboot.mongodb.repository;

import java.util.List;

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.stereotype.Repository;

import cn.xhc.springboot.mongodb.model.MemberReadHistory;

@Repository
public interface MemberReadHistoryRepository extends MongoRepository<MemberReadHistory, String> {

	/*根据会员标识符按时间倒序获取浏览记录*/
	@Query("{ 'memberId' : ?0 }")
	List<MemberReadHistory> findbyMemberIdOrderByCreateTimeDesc(Long memberId);
}

===================================================================
总结:

当使用xxRepository接口继承MongodbRepository接口的时候,应该加上@Query()注解,这样才能让xxRepository接口成功创建对应的bean对象,可以这样理解,如果不加上这个注解,就属于去到mysql数据库中查询,但是该代码是整合Mongodb的,不是整合mysql的。
springboot整合redis,都需要加上:privateRedisTemplate<Object,Object> redisTemplate;
这个对象,springboot整合Mongodb与之一样,都需要特定的代码或者注解才能查询特定的数据库。


版权声明:本文为weixin_45645403原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。