Enterprise 중급

장황한 HttpServlet 보일러플레이트를 선언적 JAX-RS 리소스 클래스로 대체합니다.

✕ Java EE
@WebServlet("/users")
public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req,
                         HttpServletResponse res)
            throws ServletException, IOException {
        String id = req.getParameter("id");
        res.setContentType("application/json");
        res.getWriter().write("{\"id\":\"" + id + "\"}");
    }
}
✓ Jakarta EE 8+
@Path("/users")
public class UserResource {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response getUser(
            @QueryParam("id") String id) {
        return Response.ok(new User(id)).build();
    }
}
이 코드에 문제가 있나요? 알려주세요.
📐

선언적 라우팅

어노테이션이 명령형 if/else 디스패치 대신 HTTP 메서드, 경로, 콘텐츠 타입을 정의합니다.

🔄

자동 마샬링

POJO를 직접 반환합니다; 런타임이 @Produces에 따라 JSON이나 XML로 직렬화합니다.

🧪

더 쉬운 테스트

리소스 클래스는 서블릿 컨테이너 없이 테스트 가능한 일반 Java 객체입니다.

이전 방식
HttpServlet
모던 방식
JAX-RS 리소스
JDK 버전
11
난이도
중급
Servlet 대 JAX-RS
사용 가능

Jakarta EE 8 / Java 11 이후 널리 사용 가능

JAX-RS(Jakarta RESTful Web Services)는 어노테이션으로 REST 엔드포인트를 노출할 수 있게 합니다. HTTP 메서드 체크, 경로 파싱, 요청/응답 마샬링이 프레임워크에 의해 처리됩니다.

공유 𝕏 🦋 in