Spring boot рассматривает возможность определения компонента типа, проверка компонента не работает

#java #spring #spring-boot

#java #spring #spring-boot

Вопрос:

Я пытаюсь следовать приведенному ниже руководству:

https://dzone.com/articles/spring-boot-jpa-hibernate-oracle

Структура моего проекта следующая:

введите описание изображения здесь

Мой pom такой, как показано ниже:

 <project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nuril.work</groupId>
  <artifactId>SpringBootHiberate</artifactId>
   <version>0.0.1-SNAPSHOT</version>

   <properties>
       <maven.compiler.source>1.8</maven.compiler.source>
       <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.RELEASE</version>
    </parent>
  <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
  </dependencies>
  <build>
      <plugins>
          <plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>
      </plugins>
  </build>

</project>
  

Когда я запускаю класс приложения, как показано:

 @SpringBootApplication
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class Application implements CommandLineRunner{
    @Autowired
    SoccerService soccerService;
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
    @Override
    public void run(String... arg0) throws Exception {
        soccerService.addBarcelonaPlayer("Xavi Hernandez", "Midfielder", 6);
        List<String> players = soccerService.getAllTeamPlayers(1);
        for(String player : players)
        {
            System.out.println("Introducing Barca player => "   player);
        }
    }
}
  

Я получаю приведенную ниже ошибку:

 Description:

Field playerRepository in com.nuril.work.service.SoccerServiceImpl required a bean of type 'com.nuril.work.repository.PlayerRepository' that could not be found.


Action:

Consider defining a bean of type 'com.nuril.work.repository.PlayerRepository' in your configuration.
  

Я просмотрел другие ответы, и они предложили добавить аннотацию @ComponentScan.

Я добавил следующее

 @SpringBootApplication
@ComponentScan("com.nuril.work.repository") 
@ComponentScan("com.nuril.work.service") 
  

Однако я все еще получаю ту же ошибку, что может быть причиной этого?

Комментарии:

1. Возможно, вам не хватает аннотации @Component в PlayerRepository

2. Почему вы исключили DataSourceAutoConfiguration и HibernateJpaAutoConfiguration ?

3. потому что это избавило от ошибки: Описание: Не удается определить класс драйвера встроенной базы данных для типа базы данных NONE Действие: Если вам нужна встроенная база данных, пожалуйста, укажите поддерживаемую в classpath. Если у вас есть настройки базы данных, которые необходимо загрузить из определенного профиля, вам может потребоваться активировать его (в настоящее время ни один профиль не активен).

4. Это потому, что вы не определили свой источник данных.

5. Да, мой файл назывался app.properties вместо application.properties, после изменения имени файла я больше не получаю никаких ошибок.

Ответ №1:

Попробуйте добавить @EnableJpaRepositories(basePackages="com.nuril.work.repository") в Application класс.

Смотрите документы: https://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa/repository/config/EnableJpaRepositories.html

Кроме того, проверьте, есть ли в ваших репозиториях @Repository аннотации.