当前位置: 首页 > 知识库问答 >
问题:

@Repository接口上的Bean创建错误

臧曜瑞
2023-03-14
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。上面的两个文件位于同一个包中。我已经将前缀路径替换为*-但请放心*在任何地方都有相同的含义。如果有任何额外的日志,请告诉我。

编辑:

我在我的主应用程序类中添加了@EnableMongorPositories。这就导致了这个错误-

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?

共有1个答案

松成和
2023-03-14

由于您使用的是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配置的。希望这有帮助。

 类似资料:
  • 我试图创建像@repository这样的系统。

  • 我正在为spring数据存储库编写junit测试。但我不能自动连接存储库界面。如果我运行main方法,则程序正在运行,spring可以检测所有存储库、服务和实体,但如果我运行测试,则会出现以下错误: UnsatisfiedDependencyException:创建名为“repository”的bean时出错。BookRepositoryTest:通过字段“bookRepository”表示的未满

  • 我尝试了很多事情 be.fgov.minfin.virtualprinter.model.StatusMap中的字段statusDescriptionDao需要一个类型为

  • 我对JAVA web应用程序非常陌生,所以请记住这一点。我承担了一个非常大的项目,令人望而生畏。我终于修复了Maven依赖,现在在Tomcat上运行时遇到了第一个错误。 包含eu.digient.billfold.goshgame.game.level.ItemConfigFactoryImpl模块的Spring配置:

  • 即使我的接口MonRepo(扩展JpaRepository)没有注释任何注释,告诉spring为这个类创建一个bean(例如。服务、控制器、组件等)。如何创建此类的 Bean。我确信创建了一个 bean,因为我在另一个类中自动连接了 monRepo,并且它工作得很好。 MonRepo公司 其中 monRepo 自动连线的类 除了我的类,我没有在任何地方使用过enableJpaRepository注