<React.js, 스프링 부트, AWS로 배우는 웹 개발 101>(김다정 지음)을 따라 TO-DO 앱을 하나 만들 예정이다.
앞으로 쓸 대부분의 포스팅(이미지/글)은 위의 서적을 참고/출처로 작성되었음을 미리 밝힌다.
대부분의 자바 웹 앱들이 자바 서블릿을 기반으로 돌아가는 방법..
package com.example.Demo;
import java.io.*;
import javax.servlet.*;
import jacax.servlet.http.*;
public class Hello extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// parameter 해석
String name = request.getParameter("name");
// business logic 실행
process(name);
// response 구축
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print("<html>");
// UI 부분
out.print("</html>");
private void process(String name) {
// business logic
}
}
원래는 웹서비스를 만들 때, HttpServlet을 상속하는 서브 클래스를 만들고 doGet() 메서드를 구현해야 한다.
그 다음 매개변수로 넘어오는 HttpServletRequest에서 원하는 정보를 추출한다.
그런 다음 비즈니스 로직인 process() 실행하고
반환할 정보를 HttpServletResponse에 담는다.
process() 로직만 하나 하자고 이 난리를 쳐야하며,, API를 하나 만들 때마다 이 작업을 반복해야 한다.
스프링 부트는 어노테이션과 서브 클래스를 적절히 이용해 개발자들이 반복 작업과 코드를 최소화할 수 있도록 한다. 부트에는 이미 Dispatcher Servlet이라는 서브 클래스가 구현돼있다.
그래서 개발자가 서블릿 클래스를 작성하지 않아도 된다. 대신 개발자는 부트가 제공하는 어노테이션과 인터페이스를 이용해 스프링이 비즈니스 로직을 이해할 수 있도록 내부 기능을 구현하면 된다.
@RestController // JSON을 리턴하는 웹 서비스임을 명시
public class HelloController {
@GetMapping("/test") // path 설정, GET 메서드 사용
public String process(@RequestParam String name) {
// 비즈니스 로직
return "test" + name;
}
}