@Repository 接口上的 Bean 创建错误

Bean creation error on @Repository interface

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

import java.util.Optional;

@Repository
public interface FormRepository extends MongoRepository<Form, Integer> {
    
    Optional<Form> findById(Integer formId);
}

这是我创建的 mongo 存储库。我正在按如下方式访问它:

@Service
public class FormServiceImpl implements FormService {

        @Autowired
        FormRepository formRepository;
    @Override
    public List<Question> getQuestions(Integer formId, ){
            List<Question> questionList = new ArrayList<>();
            ..........
            ......................
            ........ initialise questionlist .............
            ......................

            formRepository.save(new Form(questionList, "firstForm"));
            return questionList;
        }
    }

我收到错误 ->

***************************
APPLICATION FAILED TO START
***************************

Description:

Field formRepository in *.service.impl.FormServiceImpl required a bean of type '*.service.FormRepository' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type '*.service.FormRepository' in your configuration.


Process finished with exit code 1

我的想法: @Repository 应该足以将 FormRepository 注册为 bean。然而,事实并非如此。我无法将 FormRepository 接口注册为 bean。上面的两个文件位于同一个包中。 我已经用 * 替换了前缀路径 - 但请放心 * 在任何地方都具有相同的含义。 如果有任何其他日志,请告诉我。

编辑:

我在主应用程序中添加了@EnableMongoRepositories class。这导致了这个错误 ->

2022-04-24 19:20:29.085 ERROR 2941 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Field formRepository in *.service.impl.FormServiceImpl required a bean named 'mongoTemplate' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean named 'mongoTemplate' in your configuration.


Process finished with exit code 1

我认为MongoTemplate 和MongoRepository 是两个截然不同的东西。为什么我的 mongo 存储库需要依赖 MongoTemplate?

由于您正在使用 mongo,因此您需要添加额外的注释。

@SpringBootApplication
@EnableMongoRepositories(basePackageClasses = FormRepository .class)
public class MainClass {}

还要确保您的文件夹结构正确。

对于其他问题,您应该在 'POM'

中添加依赖项
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

都是关于mongo配置的。 希望这有帮助。