【发布时间】:2013-12-31 12:47:46
【问题描述】:
我遇到了存储库 bean 定义的问题。首先,我不喜欢仅将存储库定义为接口并且不编写自己的实现的新样式。
所以我在写简单的界面:
public interface UserRepo {
Member findByUsername(String username);
Member findByEmail(Email email);
Institution save(Institution institution);
User save(User user);
}
正如您所见,该接口没有扩展任何 spring 数据接口,接下来我将为该接口创建自己的实现:
public class UserRepoImpl extends AbstractMongoQuerydslRepo<Member> implements UserRepo {
private static final Logger LOG = LoggerFactory.getLogger(UserRepoImpl.class);
private static final QMember memberQuery = QMember.member;
private final PathBuilder<Member> memberPath;
@Autowired
public UserRepoImpl(MongoOperations mongoOperations) {
super(mongoOperations);
Preconditions.checkNotNull(mongoOperations);
memberPath = new PathBuilderFactory().create(Member.class);
}
…
}
所以该类的存储库实现后缀为 Impl,这是默认值
EnableMongoRepository 注释中的后缀。接下来,我添加我的配置:
@EnableMongoRepositories(basePackageClasses={UserRepo.class})
public class MongoTestContext extends AbstractMongoConfiguration{
…
}
我有错误:
No qualifying bean of type [com.xxxxx.infrastructure.repo.UserRepo] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
我的配置有什么问题?我还尝试在 UserRepository 和 UserRepositoryImpl 中添加 @Repository 注释,但它不起作用。我的 UserRepo 和 UserRepoImpl 也有相同的包。
【问题讨论】:
标签: spring mongodb spring-data spring-data-mongodb