gpt4 book ai didi

java - Spring Framework 5 中的问题接线 JPA 存储库

转载 作者:太空宇宙 更新时间:2023-11-04 10:22:44 24 4
gpt4 key购买 nike

我最近开始学习 Java,以及 Spring 5 和 Spring Boot。我对创建网络服务还比较陌生,所以首先我要创建一个在线宠物商店 API。我一直在关注 github 教程中的源代码作为指导:https://github.com/in28minutes/spring-boot-examples/tree/master/spring-boot-2-rest-service-with-swagger

要部署 API,我运行以下命令:

~mvn clean install
~mvn spring-boot:run

它构建成功,没有错误或警告。但是,当我使用 spring-boot:run 命令时,我收到以下消息:

Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.0.2.RELEASE:run (default-cli) on project gs-rest-service: An exception occurred while running. null: InvocationTargetException: Error creating bean with name 'petController': Unsatisfied dependency expressed through field 'petRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'petstore.pet.PetRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} -> [Help 1]

我用谷歌到处搜索,但似乎找不到答案。我的代码如下:

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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.springframework</groupId>
<artifactId>gs-rest-service</artifactId>
<version>0.1.0</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.0.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
</dependencies>

<properties>
<java.version>1.8</java.version>
</properties>


<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

<repositories>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
</project>

src/main/java/petstore/PetStoreApplication.java

package petstore;

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

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

src/main/java/petstore/pet/Pet.java

package petstore.pet;

import com.sun.javafx.beans.IDProperty;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Pet {

@Id
@GeneratedValue
private long id;

private String name;
private String status;

public Pet(long id, String name, String status)
{
this.id = id;
this.name = name;
this.status = status;
}

public long getId()
{
return this.id;
}

public String getName()
{
return this.name;
}

public String getStatus()
{
return this.status;
}

public void setId(long id)
{
this.id = id;
}

public void setName(String name)
{
this.name = name;
}

public void setStatus(String status)
{
this.status = status;
}
}

src/main/java/petstore/pet/PetRepository.java

package petstore.pet;

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

@Repository
public interface PetRepository extends JpaRepository<Pet, Long>
{

}

src/main/java/petstore/PetController.java

package petstore.pet;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;


@RestController
public class PetController
{
@Autowired
private PetRepository petRepository;

@GetMapping("/pets")
public List<Pet>retrieveAllPets()
{
return petRepository.findAll();
}
}

src/main/java/petstore/pet/PetNotFoundException.java

package petstore.pet;

public class PetNotFoundException extends RuntimeException
{
public PetNotFoundException(String exception)
{
super(exception);
}
}

我相信我在接线方面遗漏了一些东西,但我不确定如何解决它,而且谷歌搜索也没有让我走得太远。对于这个冗长的问题表示歉意。非常感谢任何帮助。

最佳答案

您应该仅包含以下依赖项才能使您的应用程序正常运行。另外,我添加了 h2 数据库依赖项,因为您可能需要一个数据库依赖项才能使您的应用程序正常工作。请随意根据您使用的数据库进行相应更改。

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
</dependencies>

关于java - Spring Framework 5 中的问题接线 JPA 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50921213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com