Рассмотрите возможность создания bean-компонента типа «[class]» в вашей конфигурации. - PullRequest
0 голосов
/ 21 октября 2019

Я пытался создать приложение CRUD, но когда я пытаюсь запустить приложение, я получаю ошибку"Field repo in com.nationwide.individualproject.controllers.BoulderController required a bean of type 'com.nationwide.individualproject.Repos.BoulderRepo' that could not be found."вместе с сообщением в заголовке.

Я попытался добавить различные аннотации, такие как @ComponantScan и @EntityScan, но это ничего не изменило. Приложение состоит из трех пакетов все под com.nationwide.individualproject; .controllers, .data, .Repos, каждый из которых помечен как @RestController, @Entity, and @Repository соответственно.

Основное приложение класс вне всех этих пакетов на одном уровне.

Основное приложение выглядит так:

package com.nationwide.individualproject;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication()

public class IndividualProjectApplication {

    public static void main(String[] args) {
        SpringApplication.run(IndividualProjectApplication.class, args);
    }

}

BoulderRepo выглядит следующим образом:

package com.nationwide.individualproject.Repos;

import com.nationwide.individualproject.data.Boulder;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;


import java.util.ArrayList;
import java.util.Date;

@Repository
public interface BoulderRepo extends JpaRepository<Boulder, Integer> {
...
}

Класс Боулдера выглядит так:

package com.nationwide.individualproject.data;

import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.Date;

@Entity
public class Boulder {
    @Id
    ...
}

и, наконец, контроллер выглядит так:

    package com.nationwide.individualproject.controllers;

    import com.nationwide.individualproject.Repos.BoulderRepo;
    import com.nationwide.individualproject.data.Boulder;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RestController;



import java.util.ArrayList;
import java.util.Date;

@RestController
public class BoulderController {

    @Autowired
    private BoulderRepo repo;
...
}

Глядя на другие вопросы, похожие на мои, они предполагают, что это как-то связано с наличием классовразные пакеты, но я все еще не уверен, почему я получаю ошибку, когда основной класс находится на том же уровне, что и все пакеты.

Визуализация структуры проекта выглядит примерно так:

 ---com.nationwide.individualproject

     ---controllers

     ---data

     ---Repos

     ---individualProjectApplication

РЕДАКТИРОВАТЬ больше сообщение Stacktrace

2019-10-21 14:04:21.705  INFO 3172 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2019-10-21 14:04:21.716  WARN 3172 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'boulderController': Unsatisfied dependency expressed through field 'repo'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.nationwide.individualproject.Repos.BoulderRepo' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
Related cause: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'speedRepo': Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)
Related cause: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'boulderRepo': Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)
Related cause: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'topRopeRepo': Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)
Related cause: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'leadRepo': Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)
2019-10-21 14:04:21.717  INFO 3172 --- [           main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2019-10-21 14:04:21.720  INFO 3172 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2019-10-21 14:04:21.732  INFO 3172 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
2019-10-21 14:04:21.735  INFO 3172 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2019-10-21 14:04:21.746  INFO 3172 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-10-21 14:04:21.849 ERROR 3172 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

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

Description:

Field repo in com.nationwide.individualproject.controllers.BoulderController required a bean of type 'com.nationwide.individualproject.Repos.BoulderRepo' 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 'com.nationwide.individualproject.Repos.BoulderRepo' in your configuration.

1 Ответ

0 голосов
/ 21 октября 2019

У вас есть проблема с версией в вашем файле pom.xml. Удалите версию из кода ниже.

     <dependency>
          <groupId>org.springframework.data</groupId>
          <artifactId>spring-data-jpa</artifactId>
          <version>2.0.1.RELEASE</version>
     </dependency>

Это должно быть похоже на

     <dependency>
          <groupId>org.springframework.data</groupId>
          <artifactId>spring-data-jpa</artifactId>
     </dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...