[英]Rest Controller method not getting called in spring boot
I am implementing rest webservice via a spring boot application.我正在通过 Spring Boot 应用程序实现 rest webservice。
POM聚甲醛
<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>com.myCompany</groupId>
<artifactId>services</artifactId>
<version>1.0-SNAPSHOT</version>
<name>REST Services</name>
<description>REST Services</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties应用程序属性
server.port=8082
server.contexPath=/services
logging.level.org.springframework.web = DEBUG
logging.level.com.myCompany= INFO
logging.file = ../logs/services.log
Application launcher class应用程序启动器类
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Controller控制器
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AccountRestController {
private static final Logger logger = LoggerFactory.getLogger(AccountRestController.class);
@RequestMapping(value="/account", method=RequestMethod.GET)
public void createAccount(){
logger.info("ACCOUNT METHOD CALLED");
}
}
I see Did not find handler method for [/services/account] message in the console when I fire http://localhost:8082/services/account URL in the browser as shown below当我在浏览器中触发http://localhost:8082/services/account URL 时,我在控制台中看到没有找到 [/services/account]消息的处理程序方法,如下所示
2018-02-06 08:30:42.868 DEBUG 7532 --- [http-nio-8082-exec-3] s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /services/account
2018-02-06 08:30:42.868 DEBUG 7532 --- [http-nio-8082-exec-3] s.w.s.m.m.a.RequestMappingHandlerMapping : Did not find handler method for [/services/account]
2018-02-06 08:30:42.869 DEBUG 7532 --- [http-nio-8082-exec-3] o.s.w.s.handler.SimpleUrlHandlerMapping : Matching patterns for request [/services/account] are [/**]
2018-02-06 08:30:42.869 DEBUG 7532 --- [http-nio-8082-exec-3] o.s.w.s.handler.SimpleUrlHandlerMapping : URI Template variables for request [/services/account] are {}
I dont see message - ACCOUNT METHOD CALLED in the console meaning controller method is not getting invoked.Can you please let me know why createAccount() method not getting called ?我没有在控制台中看到消息 - ACCOUNT METHOD CALLED 意味着控制器方法没有被调用。你能告诉我为什么 createAccount() 方法没有被调用吗?
Is controller class getting identified/scanned by Spring factory?控制器类是否被 Spring 工厂识别/扫描?
What is causing this error?是什么导致了这个错误?
Please change server.contexPath
to server.contextPath
. 请将server.contexPath
更改为server.contextPath
。
And try again, it should work as there's no extra config
or code is there. 再试一次,它应该工作,因为那里没有多余的config
或代码。
http://www.baeldung.com/spring-boot-application-configuration http://www.baeldung.com/spring-boot-application-configuration
Your server.contexPath should be server.contextPath. 您的server.contexPath应该是server.contextPath。 You missed a T in contexPath. 您错过了contexPath中的T。
there is no request mapping in your class level. 在您的课程级别没有请求映射。 After @RestController , There should be @RequestMapping("/services/*) 在@RestController之后,应该有@RequestMapping(“ / services / *)
看起来您拼写了该属性,它应该是server.contex t路径,而不是您所用的server.contexPath(w / oa't')。
Your controller should be in the same package or in any subpackage of your main SpringBootApplication
file.你的控制器应该在你的主SpringBootApplication
文件的同一个包或任何子包中。
If you want to include controllers present in either some other package or in a higher level then you can specifically mention that using componentScan annotation.
如果您想在其他包或更高级别中包含控制器,那么您可以使用componentScan annotation.
特别提及componentScan annotation.
As shown in the below reference image, my login controller is not present in the same or subpackage of StudentServicesApplication.java
.如下图所示,我的登录控制器不存在于StudentServicesApplication.java
的相同或子包中。 Hence I have specifically mentioned the package name of the controller to be considered using componentScan因此我特别提到了要考虑使用 componentScan 的控制器的包名称
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.