Я пытался создать приложение 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.