Vaibs
Vaibs

Reputation: 1606

Confusing behavior of @service in spring

@Service and @Controller annotations are used for automatic bean detection using classpath scan in Spring framework.

So I tried below four use cases but I am bit confused with case 4 as it gives me 404 error.

use case 1: @Controller & class level @RequestMapping

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

Result:

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

use case 2: @Service & class level @RequestMapping

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

Result:

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

use case 3: @Controller & no class level @RequestMapping

@Controller
public class MyController
{
...
}

Result:

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

use case 4: @Service & no class level @RequestMapping

@Service
public class MyController
{
...
}

Result:

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

code:

@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;
    }
}

So in short when using @Service, if I dont use @RequestMapping at class level am getting 404 error.

Upvotes: 3

Views: 238

Answers (1)

a better oliver
a better oliver

Reputation: 26828

A bean is considered a request handler if it has either @Controller or @RequestMapping at class level.

Upvotes: 1

Related Questions