把它们串成一个最小完整服务:
package example;
import io.micronaut.http.annotation.*;
import io.micronaut.serde.annotation.Serdeable;
import jakarta.inject.Singleton;
@Controller("/missions")
public class MissionController {
private final MissionService missionService;
public MissionController(MissionService missionService) {
this.missionService = missionService;
}
@Get("/{id}")
public MissionView detail(Long id) {
return missionService.detail(id);
}
@Post
public MissionView create(@Body CreateMissionCommand command) {
return missionService.create(command);
}
}
@Singleton
class MissionService {
public MissionView detail(Long id) {
return new MissionView(id, "night-watch", "ready");
}
public MissionView create(CreateMissionCommand command) {
return new MissionView(1L, command.name(), "created");
}
}
@Serdeable
record CreateMissionCommand(String name) {
}
@Serdeable
record MissionView(Long id, String name, String status) {
}这段代码里你能看到 Micronaut 的典型气质:
- Controller 负责前线哨站
- Service 负责营内调度
- DTO 显式声明可序列化
- 注解驱动但运行时尽量轻量
也就是:
不是没有注解,而是注解尽量在编译期消化。