- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我最近开始学习 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/
使用 Spring 连接,如果我有一个接口(interface)的多个实现,我可以使用 @Qualifier 来指定我想要的。 例如,假设我有一个 @Component @Qualifier("Toy
我正在尝试将构造函数注入(inject)到下面的 bean 中,但我一直收到未找到默认构造函数的错误 - Caused by: java.lang.NoSuchMethodException: my.
我正在学习 Spring 的基础知识,现在我正在复习 Beans/wiring。这个问题可能没有意义,这只是我在阅读/尝试 Craig Walls 的 Spring into Action 一书中的一
1、软路由、硬路由概念介绍 硬路由 通俗介绍:目前我们上网使用的路由器就是“硬”路由,他是厂商提供了一套完整的定制的软件+硬件的解决方案,包含刷好的系统(固件)、电源、路由器机
我试图找出使用 akka-http 和 akka-streams 实现真正的 websocket 应用程序的最佳方法。我主要寻找的是简单性,而我现在还没有得到。 假设您有一个相当复杂的管道,它需要区分
只是在阅读spring,并且在spring中使用DI时,如果将bean设置为单例(默认),则将“分配”该类的单个实例,而原型(prototype)每次都会强制一个新实例。 每次容器分配相同实例的后果是
我的项目有两个 ApplicationContext(非常大的项目)。一份带有数据的旧 xml 现在我需要将我的其他项目 applicatinContext 添加到其中或以任何其他方式添加,这
有没有一种方法或工具可以在编译时检测我的任何 spring bean 是否未正确 Autowiring 。 例如,对于基于类型的布线,如果该类型不存在,它应该提示。或者对于基于“名称”的连接,如果不存
我现在在我的网站上使用 Typescript,但在处理特定的 jQuery 事件时遇到困难。 为了举例,我将我的代码缩短为只包含相关部分;我有这样的设置... var elements = {
是否可以通过JUnit测试Spring接线是否成功? 我想通过反射(reflection)来做到这一点。例如:获取所有带有 id *Controller 的 bean 并测试字段 *services
为什么我的集成测试提示缺少 RestTemplate接线Spring Boot ? 我能做些什么来修复这个集成测试? 此外,这是集成测试还是单元测试?根据我的理解,这个测试正在调用一个模拟服务器,它是
我正在关注本教程:http://www.youtube.com/watch?v=i9MHigUZKEM 我已经 46:32 分钟了,这是到目前为止我的代码: Name :
我正在使用 Node 和 Anugular,并且我已经从我的应用程序创建了一个 RESTful api,并创建了一个 Angular 资源来使用它。我对 Angular ui-router 指令如何与
我尝试使用 GPIO 引脚 18 上的 PWM 来驱动 Raspberry PI 的伺服系统,我对设置进行了接线,如下所示。 当我驱动伺服时,我可以毫无问题地执行此操作,我使用的命令如下所示。
我是一名优秀的程序员,十分优秀!