поле репозитория требовало bean типа, который не может быть найден [закрыто]

0

У меня очень простой весенний проект, и у меня проблемы с отладкой. Либо я получаю указанную выше ошибку, либо моя программа компилируется нормально, но я не могу получить доступ к конечным точкам. Есть и другие подобные вопросы о stackoverflow, и общий ответ - добавить ComponentScan и / или переупорядочить пакеты, чтобы основная часть находилась в указанных выше каталогах в качестве контроллера / службы / репо. Я пробовал все эти методы, и у меня все еще та же ошибка. Вот несколько сообщений, которые я просмотрел.

  1. «Поле требует bean типа, который не может быть найден». ошибка Spring restful API с использованием mongodb
  2. Рассмотрите возможность определения bean-компонента типа package в вашей конфигурации [Spring-Boot]

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

ContestApplication.java

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, SecurityAutoConfiguration.class})
@ComponentScan(basePackages = {"halloween.contest"})
public class ContestApplication {

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

Controller.java

import halloween.contest.main.models.ImageModel;
import halloween.contest.main.repos.ImageRepository;

@CrossOrigin(origins = "http://localhost:4200")
@RestController
@RequestMapping("/halloween")
public class Controller {
    
    @Autowired
    ImageRepository imageRepository;
    
    @PostMapping("/upload")
    public BodyBuilder uploadImage(@RequestParam("picturePhrase") String phrase, 
                            @RequestParam("imageFile") MultipartFile file) throws IOException 
    {
        System.out.println("Original Image Byte Size - " + file.getBytes().length);
        ImageModel img = new ImageModel(file.getOriginalFilename(), file.getContentType(),
                compressBytes(file.getBytes()), phrase, 0);
        imageRepository.save(img);
        return (BodyBuilder) ResponseEntity.status(HttpStatus.OK);
    }
    
    @GetMapping("/hello")
    public String helloworld() {
        return "hello world";
    }
    }

ImageRepository.java

import java.util.Optional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

import halloween.contest.main.models.ImageModel;


public interface ImageRepository extends CrudRepository<ImageModel, Long> {
    Optional<ImageModel> findByName(String name);
}

application.properties

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration

spring.servlet.multipart.max-file-size=5MB
spring.servlet.multipart.max-request-size=5MB

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>halloween</groupId>
    <artifactId>contest</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>contest</name>
    <description>halloween picture contest</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </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>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Вот изображение моей файловой структуры, которая, кажется, является проблемой в других сообщениях, но я исправил свою в соответствии с их советами. файловая структура

3
  • 1
    Вы не указали полный текст сообщения об ошибке в своем вопросе. 2 дня назад
  • I still receive the same error. А ошибка ...? 2 дня назад
  • Конечно, не будет. Вы пытаетесь использовать базу данных, но отключаете конфигурацию базы данных, поэтому она не обнаружит эти типы, потому что базы данных нет. Удалите исключение для DatasourceAutoconfigurationи настройте правильную базу данных. 2 дня назад
0

Возможно, эта ошибка возникает из-за того, что вы забыли упомянуть аннотацию в классе репозитория или в классе обслуживания.

@Repository
@Service
Новый участник
Анкит Шривастава - новый участник этого сайта. Будьте внимательны, прося разъяснений, комментируя и отвечая. Ознакомьтесь с нашим Кодексом поведения .
5
  • В вашем классе ImageRepository.java используйте аннотацию @Repository 2 дня назад
  • Аннотирование репозитория Spring Data с помощью этого только добавляет беспорядка, он не используется для обнаружения интерфейса для создания bean-компонента. Spring Data использует другие механизмы обнаружения. 2 дня назад
  • но чтобы сказать весне, вы должны аннотировать эти аннотации 2 дня назад
  • Нет. Это касается классов, а не интерфейсов, и особенно интерфейсов, связанных с Spring Data. 2 дня назад
  • @Repository public interface CommentsRepository extends JpaRepository<Comments, Integer> { } 2 дня назад