Поле personRepositary in () требовало bean-компонента типа (), который не может быть найден - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь запустить разработанное весной веб-приложение и получаю следующую ошибку:

enter image description here

Моя структура папок выглядит следующим образом.

enter image description here

Вот мой PersonRepositary. java код, который находится внутри папки репозитория.

package com.travelx.travelx.repositary;

import org.springframework.data.repository.CrudRepository;
import com.travelx.travelx.models.Person;

public interface PersonRepositary extends CrudRepository<Person, Integer> {

}

RegisterController. * Файл 1039 *, который находится в папке контроллеров, представляет собой c.

package com.travelx.travelx.controllers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.travelx.travelx.models.Person;
import com.travelx.travelx.repositary.PersonRepositary;

@RestController
@RequestMapping("register")
public class RegisterController {

    @Autowired
    private PersonRepositary personRepositary;

    @PostMapping("login")
    public String registerPerson(@RequestBody Person person) {
        personRepositary.save(person);
        return "You are Registered!";
    }

}

И файл TravelXApplication. java, который находится в контроллерах, находится ниже.

package com.travelx.travelx.controllers;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

@SpringBootApplication
@ComponentScan
@EntityScan
@EnableJpaRepositories
public class TravelxApplication {

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

}

Я пытаюсь создать веб-страницу, где человек может зарегистрироваться на сайте. Здесь я использую xampp в качестве моей платформы для обработки серверной части. Как показано на рисунке, контроллеры, репозитории и модели реализованы в отдельных папках. Я новичок в весне. Поэтому, как бы мне ни было трудно найти проблему, я не могу ее найти. Может кто-нибудь помочь мне, пожалуйста?

-------------- ОБНОВЛЕНИЕ ------------------

Я переместил свое приложение TravelXApplication. java в com.travelx.travelx, и теперь эта ошибка исчезла. Весна работает нормально. Однако, когда я открываю форму, вставляю данные и пытаюсь сохранить их, браузер выдает мне следующую ошибку:

enter image description here

Как мне ее решить?

1 Ответ

1 голос
/ 22 апреля 2020

Ваш PersonRepositary не зарегистрирован как bean в контексте Spring. На практике это означает, что Spring не сможет внедрить его в ваш RegisterController.

Я подозреваю, что @EnableJpaRepositories, @EntityScan и @ComponentScan не нужны в вашем основном классе приложения и на самом деле вызывая переопределение конфигурации Spring automati c. Попробуйте удалить эти три аннотации из TravelxApplication. Вот ответ о том, почему он все еще должен работать без аннотаций.

Обновление: только что заметил, что ваш TravelxApplication расположен в контроллерах пакет, но тогда он не будет виден в вашем хранилище. Обязательно переместите свой основной класс в пакет com.travelx.travelx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...