Bird
Raised Fist0
Spring Bootframework~8 mins

Request mapping by method and path in Spring Boot - Performance & Optimization

Choose your learning style10 modes available
Performance: Request mapping by method and path
MEDIUM IMPACT
This affects server response routing speed and how quickly the server matches incoming requests to handlers.
Mapping HTTP requests to controller methods efficiently
Spring Boot
@GetMapping(path = "/api/data")
public String handleGet() {
    return "get response";
}

@PostMapping(path = "/api/data")
public String handlePost() {
    return "post response";
}
Separates handlers by HTTP method, allowing Spring to route requests directly without extra checks.
📈 Performance GainReduces routing overhead, improving response time by avoiding method type checks.
Mapping HTTP requests to controller methods efficiently
Spring Boot
@RequestMapping(path = "/api/data")
public String handleAllRequests(HttpServletRequest request) {
    // handle GET, POST, PUT, DELETE all here
    String method = request.getMethod();
    // logic to handle different methods
    return "response";
}
Handles all HTTP methods in one method causing extra logic to determine method type and slower routing.
📉 Performance CostAdds extra CPU cycles per request to check method type, increasing response time slightly.
Performance Comparison
PatternRouting ComplexityMethod ChecksResponse Time ImpactVerdict
Generic @RequestMapping for all methodsHigh - checks method at runtimeMultiple per requestSlightly higher latency[X] Bad
Specific @GetMapping, @PostMapping per pathLow - direct mappingSingle per requestLower latency[OK] Good
Rendering Pipeline
When a request arrives, Spring matches the HTTP method and path to the correct controller method before executing it.
→Request Routing
→Controller Method Execution
⚠️ BottleneckRequest Routing stage can slow down if mappings are ambiguous or too generic.
Optimization Tips
1Use specific HTTP method annotations (@GetMapping, @PostMapping) instead of generic @RequestMapping.
2Avoid ambiguous or overlapping path mappings to reduce routing overhead.
3Keep controller methods focused on a single HTTP method for faster routing.
Performance Quiz - 3 Questions
Test your performance knowledge
Why is it better to use @GetMapping and @PostMapping instead of a single @RequestMapping for all methods?
ABecause it reduces the number of controller classes
BBecause it allows Spring to route requests faster by method
CBecause it increases bundle size
DBecause it disables HTTP caching
DevTools: Spring Boot Actuator / Logs
How to check: Enable debug logging for Spring Web to see request mappings and routing decisions; use Actuator endpoints to monitor request handling times.
What to look for: Look for routing delays or ambiguous mappings causing slower request handling.

Practice

(1/5)
1. What does the @RequestMapping annotation do in Spring Boot?
easy
A. It styles the HTML page returned by the controller.
B. It creates a new database connection automatically.
C. It links a URL path and HTTP method to a specific method in a controller.
D. It schedules background tasks to run periodically.

Solution

  1. Step 1: Understand the purpose of @RequestMapping

    @RequestMapping is used to connect web requests to controller methods in Spring Boot.
  2. Step 2: Identify what it links

    It links both the URL path and the HTTP method (GET, POST, etc.) to the method that should handle the request.
  3. Final Answer:

    It links a URL path and HTTP method to a specific method in a controller. -> Option C
  4. Quick Check:

    @RequestMapping links URL and method [OK]
Hint: Remember: @RequestMapping connects URL + HTTP method to code [OK]
Common Mistakes:
  • Thinking @RequestMapping styles HTML output
  • Confusing it with database or scheduling annotations
  • Assuming it only maps URL without HTTP method
2. Which of the following is the correct way to map a GET request to path "/home" using @RequestMapping?
easy
A. @RequestMapping(route = "/home", method = GET)
B. @RequestMapping(path = "/home", method = RequestMethod.GET)
C. @RequestMapping(value = "/home", type = "GET")
D. @RequestMapping(method = "GET", url = "/home")

Solution

  1. Step 1: Recall correct @RequestMapping syntax

    The correct syntax uses 'path' or 'value' for URL and 'method' with RequestMethod enum for HTTP method.
  2. Step 2: Match options with syntax

    @RequestMapping(path = "/home", method = RequestMethod.GET) uses path and method=RequestMethod.GET correctly. Others use invalid attribute names or wrong types.
  3. Final Answer:

    @RequestMapping(path = "/home", method = RequestMethod.GET) -> Option B
  4. Quick Check:

    Correct syntax [OK]
Hint: Use 'path' and RequestMethod.GET for GET mapping [OK]
Common Mistakes:
  • Using 'url' instead of 'path' or 'value'
  • Passing HTTP method as string instead of RequestMethod enum
  • Using wrong attribute names like 'route' or 'type'
3. Given this controller method:
@RequestMapping(path = "/test", method = RequestMethod.POST)
public String test() {
    return "Success";
}
What happens when a client sends a GET request to "/test"?
medium
A. The server crashes with an exception.
B. The method runs and returns "Success".
C. Spring returns a 404 Not Found error.
D. Spring returns a 405 Method Not Allowed error.

Solution

  1. Step 1: Identify the mapped HTTP method

    The method is mapped only to POST requests at path "/test".
  2. Step 2: Understand what happens on GET request

    A GET request to the same path is not handled, so Spring returns 405 Method Not Allowed.
  3. Final Answer:

    Spring returns a 405 Method Not Allowed error. -> Option D
  4. Quick Check:

    GET to POST-only path = 405 error [OK]
Hint: GET request to POST-only path causes 405 error [OK]
Common Mistakes:
  • Assuming GET runs the POST method
  • Thinking it returns 404 Not Found instead
  • Believing server crashes on wrong method
4. What is wrong with this mapping?
@RequestMapping(path = "/data", method = "POST")
public String saveData() {
    return "Saved";
}
medium
A. The method attribute should use RequestMethod.POST, not a string.
B. The path attribute cannot be used with @RequestMapping.
C. The method must return void, not String.
D. The method name must be saveDataPost, not saveData.

Solution

  1. Step 1: Check method attribute type

    The method attribute expects a RequestMethod enum value, not a string.
  2. Step 2: Identify correct usage

    Using method = "POST" is invalid; it should be method = RequestMethod.POST.
  3. Final Answer:

    The method attribute should use RequestMethod.POST, not a string. -> Option A
  4. Quick Check:

    method attribute needs RequestMethod enum [OK]
Hint: Use RequestMethod.POST enum, not string "POST" [OK]
Common Mistakes:
  • Passing HTTP method as string instead of enum
  • Thinking path attribute is invalid
  • Assuming return type or method name causes error
5. You want to create two methods in a controller: one handles GET requests at "/items" and another handles POST requests at the same path "/items". Which is the best way to do this?
hard
A. Use two methods with @RequestMapping(path = "/items", method = RequestMethod.GET) and @RequestMapping(path = "/items", method = RequestMethod.POST).
B. Use one method with @RequestMapping(path = "/items") and check HTTP method inside the method manually.
C. Use @RequestMapping(path = "/items") on both methods without specifying method attribute.
D. Use @RequestMapping(method = RequestMethod.GET) on one method and @RequestMapping(method = RequestMethod.POST) on the other without path.

Solution

  1. Step 1: Understand how to map same path with different methods

    Spring allows multiple methods mapped to the same path but different HTTP methods using method attribute.
  2. Step 2: Evaluate options

    Use two methods with @RequestMapping(path = "/items", method = RequestMethod.GET) and @RequestMapping(path = "/items", method = RequestMethod.POST). correctly uses two methods with same path but different HTTP methods. Use one method with @RequestMapping(path = "/items") and check HTTP method inside the method manually. is less clean and error-prone. Use @RequestMapping(path = "/items") on both methods without specifying method attribute. causes ambiguity. Use @RequestMapping(method = RequestMethod.GET) on one method and @RequestMapping(method = RequestMethod.POST) on the other without path. misses path, so won't map correctly.
  3. Final Answer:

    Use two methods with @RequestMapping(path = "/items", method = RequestMethod.GET) and @RequestMapping(path = "/items", method = RequestMethod.POST). -> Option A
  4. Quick Check:

    Separate methods with same path, different HTTP methods [OK]
Hint: Map same path with different methods by specifying method attribute [OK]
Common Mistakes:
  • Not specifying method attribute causing conflicts
  • Checking HTTP method manually inside one method
  • Omitting path attribute causing mapping errors
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard