Java org.test.api.controller.CheckerController中的字段检查器需要类型为';org.test.api.checker.checker';那是找不到的
从IntellijIDEA运行Spring应用程序时出现以下错误Java org.test.api.controller.CheckerController中的字段检查器需要类型为';org.test.api.checker.checker';那是找不到的,java,spring,spring-boot,Java,Spring,Spring Boot,从IntellijIDEA运行Spring应用程序时出现以下错误 2017-04-20 18:20:50.645 ERROR 28680 --- [main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Field checker in org.test.a
2017-04-20 18:20:50.645 ERROR 28680 --- [main] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Field checker in org.test.api.controller.CheckerController required a bean of type 'org.test.api.checker.Checker' that could not be found.
Action:
Consider defining a bean of type 'org.test.api.checker.Checker' in your configuration.
但是,我在路径org.test.api.Checker.Checker
中有类Checker
这是类CheckerController的示例代码:
@RestController
@RequestMapping("/api/{clientId}")
public class CheckerController {
@Autowired
Validator validator;
@Autowired
@Qualifier("Checker")
Checker checker;
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Context.class, new ContextEditor());
}
@RequestMapping(value = "/{userId}/{sessionId}/check", method = RequestMethod.GET)
public CheckResults check(@PathVariable String clientId,
@PathVariable String userId,
@PathVariable String sessionId) {
CheckRequest checkRequest = new CheckRequest(CheckRequest.TYPE_1, clientId, userId, sessionId);
this.validateRequest(checkRequest);
return checker.check(checkRequest);
}
}
public interface Checker {
CheckResults check(CheckRequest request);
}
类检查器:
@RestController
@RequestMapping("/api/{clientId}")
public class CheckerController {
@Autowired
Validator validator;
@Autowired
@Qualifier("Checker")
Checker checker;
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Context.class, new ContextEditor());
}
@RequestMapping(value = "/{userId}/{sessionId}/check", method = RequestMethod.GET)
public CheckResults check(@PathVariable String clientId,
@PathVariable String userId,
@PathVariable String sessionId) {
CheckRequest checkRequest = new CheckRequest(CheckRequest.TYPE_1, clientId, userId, sessionId);
this.validateRequest(checkRequest);
return checker.check(checkRequest);
}
}
public interface Checker {
CheckResults check(CheckRequest request);
}
如何解决这个问题
更新:
@Service
public class CheckerImpl implements Checker {
@Override
public CheckResults check(CheckRequest request)
{
// ...
}
}
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.test</groupId>
<artifactId>mytestapi</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spark.version>1.6.1</spark.version>
<es.version>2.2.0</es.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.5.BUILD-SNAPSHOT</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>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>com.github.spullara.mustache.java</groupId>
<artifactId>compiler</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>${es.version}</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.3</version>
</dependency>
<dependency>
<groupId>org.apache.jena</groupId>
<artifactId>jena-tdb</artifactId>
<version>3.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-scala_2.10</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>6.5.0</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/libs-snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
</project>
4.0.0
组织测试
mytestapi
1.0-快照
UTF-8
UTF-8
1.8
1.6.1
2.2.0
org.springframework.boot
spring启动程序父级
1.4.5.构建快照
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧起动试验
测试
org.springframework.data
弹簧数据弹性搜索
2.0.0.1版本
com.github.spullara.mustache.java
编译程序
0.9.1
org.elasticsearch
弹性搜索
${es.version}
乔达时间
乔达时间
2.9.3
org.apache.jena
杰娜tdb
3.0.0
编译
org.json
json
20160810
编译
org.apache.spark
spark-sql_2.10
${spark.version}
org.jsoup
jsoup
1.10.2
com.fasterxml.jackson.core
杰克逊数据绑定
2.8.2
com.fasterxml.jackson.module
jackson-module-scala_2.10
2.8.2
org.apache.lucene
卢克尼探险家
6.5.0
春假
https://repo.spring.io/libs-release
春季快照
春季快照
https://repo.spring.io/libs-snapshot
真的
春假
https://repo.spring.io/libs-release
原始错误是由于使用了无效的限定符@qualifier(“Checker”)
。上下文中不存在id为“Checker”的bean。因为只有一个合适的实现使用额外的限定符是无用的。原始错误是由于使用了无效的限定符@Qualifier(“Checker”)
。上下文中不存在id为“Checker”的bean。因为只有一个合适的实现使用额外的@Qualifier
是无用的。当您通过@Qualifier(“Checker”)
自动连接时,请在CheckerImpl类的@Service
中定义bean名称
@Service("Checker")
public class CheckerImpl implements Checker {
@Override
public CheckResults check(CheckRequest request)
{
// ...
}
}
当您通过@Qualifier(“Checker”)
自动连接时,请在CheckerImpl类的@Service
中定义bean名称
@Service("Checker")
public class CheckerImpl implements Checker {
@Override
public CheckResults check(CheckRequest request)
{
// ...
}
}
发布你的Checker类和配置类。@shi:我发布了类Checker
。你所说的配置类是什么意思?我知道Checker是一个接口,你有这个接口的实现吗?我所说的配置类是指声明spring配置或使用xml配置的类?@shi:好的,我发布了实现类CheckerImpl
以及pom.xml
。谢谢。发布你的Checker类和配置类。@shi:我发布了类Checker
。你所说的配置类是什么意思?我知道Checker是一个接口,你有这个接口的实现吗?我所说的配置类是指声明spring配置或使用xml配置的类?@shi:好的,我发布了实现类CheckerImpl
以及pom.xml
。谢谢。对不起,我对春天的了解有点有限。请指定上下文中不存在id为“Checker”的bean是什么意思?我应该在哪里指定它?我有一个抽象类Checker
及其实现类CheckerImpl
。在CheckerController
中,我定义了@Autowired@Qualifier(“Checker”)
,我将其理解为使用类Checker
的要求。不需要限定符注释。只有当您有多个相同类型的bean时,才有必要通过名称来区分它们。如果你想保留它,你必须给checkerimplbean取一个相同的名字@Service(“Checker”)
对不起,我对Spring的了解有点有限。请指定上下文中不存在id为“Checker”的bean是什么意思?我应该在哪里指定它?我有一个抽象类Checker
及其实现类CheckerImpl
。在CheckerController
中,我定义了@Autowired@Qualifier(“Checker”)
,我将其理解为使用类Checker
的要求。不需要限定符注释。只有当您有多个相同类型的bean时,才有必要通过名称来区分它们。如果你想保留它,你必须给CheckerImpl bean一个相同的名字@Service(“Checker”)
。在这种情况下,我得到了另一个错误:org.springframework.beans.factory.BeanCreationException:创建名为'requestMappingHandlerAdapter'的bean时出错,该bean在类路径资源中定义了'requestMappingHandlerAdapter'[org/springframework/boot/autoconfigure/web/web
。这是什么意思?请共享您的spring boot配置文件我只有pom.xml
。我没有任何其他规范文件。pom.xml是maven构建文件而不是spring配置文件。正在查找