Learn MICRONAUT with Real Code Examples
Updated Nov 25, 2025
Code Sample Descriptions
1
Micronaut Simple Counter API
import io.micronaut.http.annotation.*;
import javax.inject.Singleton;
@Singleton
class CounterService {
private int count = 0;
public int getCount() { return count; }
public int increment() { return ++count; }
public int decrement() { return --count; }
public int reset() { count = 0; return count; }
}
@Controller("/counter")
class CounterController {
private final CounterService service;
CounterController(CounterService service) {
this.service = service;
}
@Get
public int getCount() { return service.getCount(); }
@Post("/increment")
public int increment() { return service.increment(); }
@Post("/decrement")
public int decrement() { return service.decrement(); }
@Post("/reset")
public int reset() { return service.reset(); }
}
Demonstrates a simple Micronaut REST API with a counter using Controller and in-memory state.
2
Micronaut Hello World API
import io.micronaut.http.annotation.*;
import io.micronaut.runtime.Micronaut;
@Controller("/hello")
class HelloController {
@Get
public String hello() { return "Hello World"; }
}
public class Application {
public static void main(String[] args) {
Micronaut.run(Application.class);
}
}
A minimal Micronaut API returning 'Hello World'.
3
Micronaut JSON Echo
import io.micronaut.http.annotation.*;
import java.util.Map;
@Controller("/echo")
class EchoController {
@Post
public Map<String, Object> echo(@Body Map<String, Object> payload) {
return payload;
}
}
Echoes back JSON sent in POST request.
4
Micronaut Query Param Example
import io.micronaut.http.annotation.*;
@Controller("/greet")
class GreetController {
@Get
public String greet(@QueryValue(defaultValue="Guest") String name) {
return "Hello " + name;
}
}
Greets user using query parameters.
5
Micronaut Path Variable Example
import io.micronaut.http.annotation.*;
@Controller("/users")
class UserController {
@Get("/{id}")
public String getUser(@PathVariable int id) {
return "User " + id;
}
}
Returns info for a user based on path variable.
6
Micronaut Async Endpoint Example
import io.micronaut.http.annotation.*;
import java.util.concurrent.*;
@Controller("/async")
class AsyncController {
@Get
public CompletableFuture<String> asyncHello() {
return CompletableFuture.supplyAsync(() -> {
try { Thread.sleep(1000); } catch (InterruptedException e) {}
return "Async Hello";
});
}
}
Asynchronous endpoint returning a delayed response.
7
Micronaut Custom 404 Response
import io.micronaut.http.annotation.*;
import io.micronaut.http.HttpResponse;
import io.micronaut.http.server.exceptions.ExceptionHandler;
import javax.inject.Singleton;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpStatus;
import io.micronaut.web.router.exceptions.NoRouteFoundException;
@Singleton
class NotFoundHandler implements ExceptionHandler<NoRouteFoundException, HttpResponse> {
@Override
public HttpResponse handle(HttpRequest request, NoRouteFoundException exception) {
return HttpResponse.status(HttpStatus.NOT_FOUND).body("Custom 404 Not Found");
}
}
Custom error handling for 404 requests.
8
Micronaut Combined Routes Example
import io.micronaut.http.annotation.*;
import javax.inject.Singleton;
import java.util.Map;
@Singleton
class CounterService {
private int count = 0;
public int getCount() { return count; }
public int increment() { return ++count; }
public int decrement() { return --count; }
public int reset() { count = 0; return count; }
}
@Controller
class CombinedController {
private final CounterService service;
CombinedController(CounterService service) { this.service = service; }
@Get("/counter") public int getCount() { return service.getCount(); }
@Post("/counter/increment") public int increment() { return service.increment(); }
@Post("/counter/decrement") public int decrement() { return service.decrement(); }
@Post("/counter/reset") public int reset() { return service.reset(); }
@Post("/echo") public Map<String,Object> echo(@Body Map<String,Object> payload) { return payload; }
@Get("/greet") public String greet(@QueryValue(defaultValue="Guest") String name) { return "Hello " + name; }
}
Multiple endpoints: counter, echo, and greeting combined.
9
Micronaut Health Check Endpoint
import io.micronaut.http.annotation.*;
@Controller("/health")
class HealthController {
@Get
public String health() { return "OK"; }
}
Simple health check endpoint returning status.
10
Micronaut JSON Post Example
import io.micronaut.http.annotation.*;
import java.util.Map;
@Controller("/json")
class JsonController {
@Post
public String postJson(@Body Map<String,Object> payload) {
return "Received: " + payload.toString();
}
}
Receives JSON and responds with confirmation message.