※이 포스팅은 https://www.baeldung.com/spring-graphql 을 번역하고, 예제 코드와 내용을 각색한 포스팅입니다. 1. 개요 GraphQL은 REST API의 대안으로 Facebook에서 제시한 새로운 Web API 컨셉입니다. 이 포스팅에서는 스프링 부트(Spring Boot)를 사용하여 웹 애플리케이션에 GraphQL서버를 구축하는 방법을 소개하겠습니다. (개인적으로 사용한 예제는 스프링 부트 2.1.8버전, 자바 8버전, JPA를 사용하였습니다.) 2. GraphQL이 뭐지? 기존 REST API는 다양한 HTTP Method가 서버에 존재하는 리소스(Resource)와 대응되어서 동작합니다. 이는 클라이언트의 요청사항과 리소스(Resource)가 잘 들어맞지 않는다면 (..
스프링 프레임워크에서 하나의 인터페이스 (혹은 상위 클래스)를 구현(상속)한 여러개의 빈이 존재하고, 그 빈들을 모두 다뤄야 하는 경우에 예제를 보겠습니다. 예제로 사용할 빈들은 다음과 같습니다. public interface Music { void playing(); } @Component public class Music1 implements Music{ @Override public void playing() { System.out.println("뮤직1의 흥겨운 노래"); } } @Component public class Music2 implements Music{ @Override public void playing() { System.out.println("뮤직2의 즐거운 노래"); } } @..
의존관계 DI를 알아보기 이전에 의존(Dependency)이라는 키워드에 대해서 알아봅시다. 예를들어, A라는 클래스가 B라는 클래스를 내부적으로 사용하게 되면 A는 B에게 의존하는 관계입니다. UML으로 표시하면 아래와 같습니다. 출처 : http://www.cs.utsa.edu/~cs3443/uml/uml.html 위의 UML을 보면 Person이라는 클래스가 Book이라는 클래스를 내부적으로 사용합니다. 그리고 Book이라는 클래스를 점선 화살표로 가르키게 되는데 이러한 관계를 Person이 Book에게 '의존'한다 라고 합니다. (추가적으로, DI를 처음 배울 때 이상한 점이 있었습니다. 스프링의 DI관계를 자세히 보면, 의존보다는 엄밀히 말해 '연관'이 맞다고 생각했습니다. 근데 왜 의존이라고 ..
웹 개발 과정 중에서 클라이언트가 보낸 요청정보를 받아 다루는 일은 굉장히 빈번하며, 반복적인 작업을 요구한다. 아래에 요청정보 처리 방법의 예제로 가장 원초적인(?) 방법부터, 스프링의 기능을 활용 하는 방법까지 총 3가지를 적어보았다. 단계별로 줄어가는 코드의 양만 보더라도, 스프링의 강력함을 알 수가 있다. 예제는 클라이언트가 보낸 nickName, title, content를 받아서 Model에 저장한 후, JSP페이지를 리턴하는 과정이다. 1.HttpServletRequest를 이용하는 방법 서블릿을 활용한 기본적인 방법이다. @RequsetMapping("/board/write") public String ArticleWrite(HttpServletRequest request, Model mo..
Bean이란 무엇인가? Bean을 한마디로 정리하자면, '스프링이 생성하고, 관리해주는 객체' 라고 할 수 있다. (그러므로 개발자가 직접 new연산자로 생성한다면 그것은 Bean이 아니다.) 왜 객체를 Bean으로 해야 할까? 스프링같은 프레임워크를 다루어 보지 않은 초보 개발자들에겐 자연스러운 궁금증이 생겨난다. 왜 객체를 스프링이 생성하고 관리해야 하는가? 스프링은 객체를 다루기 위한 보조 기능들을 제공한다. 예를들어 트랜잭션처리, 객체의 라이프사이클 관리, 자동주입 등등... 정확히 어떠한 기능인지는 알 수 없을지 라도 많은 도움을 준다는 것은 알 수 있다. 이러한 기능을 제공받기 위해서 객체를 제어하기 위한 주도권을 스프링에게 넘겨주어야 하고, 그러기 위해서 객체를 Bean으로 생성 하는 것이다..