java - @service 在 spring 中的混淆行为

标签 java spring spring-mvc annotations spring-annotations

@Service 和@Controller 注释用于在 Spring 框架中使用类路径扫描自动检测 bean。

所以我尝试了以下四个用例,但我对案例 4 有点困惑,因为它给了我 404 错误。

用例 1: @Controller 和类级 @RequestMapping

@Controller
@RequestMapping(value = "/home")
public class MyController
{
...
}

结果:

http://localhost:8080/MyApp/home/helloWorld/va ---> Hello va

用例 2:@Service 和类级别的@RequestMapping

@Service
@RequestMapping(value = "/home")
public class MyController
{
...
}

结果:

http://localhost:8080/MyApp/home/helloWorld/va ---> Hello va

用例 3:@Controller 和无类级别的@RequestMapping

@Controller
public class MyController
{
...
}

结果:

http://localhost:8080/MyApp/helloWorld/va ---> Hello va

用例 4:@Service 和无类级别的@RequestMapping

@Service
public class MyController
{
...
}

结果:

http://localhost:8080/MyApp/helloWorld/va ---> error 404

代码:

@Service
@RequestMapping(value = "/home")
public class MyController
{

    @RequestMapping(value = "/helloWorld/{Name}", method = RequestMethod.GET)
    public @ResponseBody String HelloWorld(@PathVariable("Name") String name)
    {
        return "Hello "+name;
    }
}

简而言之,在使用@Service 时,如果我不在类级别使用@RequestMapping,我将收到 404 错误。

最佳答案

如果 bean 在类级别具有 @Controller@RequestMapping,则它被视为请求处理程序。

关于java - @service 在 spring 中的混淆行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39433449/

相关文章:

java - Spring + hibernate : Initializing database with JUnit doesn't work

java - 将 Spring MVC 应用程序发布到 tomcat 服务器时找不到 404 Controller

spring - 使用 Grails Spring Security 进行 CSRF 保护

java - AngularJS、UI Bootsrap、MVC 前端 - data-ng-click 不起作用

Java变量未初始化错误

java - 无法访问 Sonarqube Web 服务 API

java - 如何覆盖 .properties 中的一个属性而不覆盖整个文件?

java - for 循环之外无法识别数组

java - 类文件 javax/validation/ConstraintViolationException 中非 native 或抽象方法中缺少代码属性

spring - 为什么我得到 "HTTP Status 404 - Servlet <servlet name> is not available"