모범 사례 및 튜토리얼

Ratpack 및 Couchbase 시작하기

저는 최근에 쥐팩.  

최신 HTTP 애플리케이션을 빌드하기 위한 Java 라이브러리 세트입니다.

이러한 단순한 정의를 뛰어넘기 위해 Ratpack은 비차단, 비동기, 네티 기반입니다. 우리의 Java SDK. 따라서 경량 애플리케이션 프레임워크의 자연스러운 후보가 될 수 있습니다.

새로운 웹 프레임워크를 테스트할 때 가장 먼저 할 수 있는 일 중 하나는 기본 API를 만드는 것입니다. 그리고 간단한 CRUD를 구축하는 것은 Couchbase와 같은 문서 데이터베이스로 작업할 때 자연스럽게 이루어집니다. 따라서 이 포스팅은 Ratpack에 대한 기본적인 소개로, Java SDK로 제공되는 Couchbase 엔티티 리포지토리 추상화를 보여줍니다. 여기서는 API 자체에 초점을 맞추지 않고 Ratpack과 Couchbase 리포지토리에서 사용되는 메커니즘에 대해 더 자세히 설명하겠습니다.

Ratpack Java 프로젝트 만들기

제가 아는 대부분의 Ratpack 사용자는 Groovy로 코딩하는 경향이 있습니다. 저는 보통 Java로 코딩을 하므로 오늘은 이 방법을 사용하려고 합니다. The 빠른 시작 쥐팩에서 찾을 수 있는 가이드에는 Groovy가 포함되어 있습니다. 예를 들어 lazybones 템플릿은 Groovy 템플릿입니다. 그래서 제가 즐겨 사용하는 IDE에서 간단한 Java Gradle 프로젝트를 생성하는 것으로 시작했습니다. 그런 다음 build.gradle 파일을 만들고 올바른 종속성으로 완성했습니다. 저는 jcenter 저장소, 쥐팩-그레이들 1.3.3에 대한 종속성을 사용하고 있는지 확인했습니다. io.ratpack.ratpack-java 플러그인. 그리고 카우치베이스 종속성도 잊지 마세요.

다음 단계는 간단한 Hello World로 앱을 시작하는 것입니다. 위의 빌드 파일에서 볼 수 있듯이 Application 클래스가 있습니다. 메인 클래스 이름 옵션이 필요합니다. 여기서는 우선 Ratpack 서버를 가동하고 헬로 월드 메시지를 반환할 '/hello' URL 경로를 등록하기만 하면 됩니다.

쥐팩에는 다음과 같은 기능이 있습니다. 핸들러 객체입니다. 핸들러는 컨텍스트를 매개변수로 사용하는 함수입니다. 핸들러를 경로에 연결할 수 있습니다. 여기서는 핸들러 함수를 '/hello' 경로에 연결하겠습니다. Ratpack을 이해하려면 모든 애플리케이션에서 핸들러를 사용하므로 핸들러를 이해해야 합니다.

Ratpack 애플리케이션의 진입점은 RatpackServer 클래스입니다. 이 클래스에서 정적 메서드인 시작. 이 함수는 RatpackServerSpec 객체를 매개변수로 하는 함수를 받습니다. 이 객체는 서버를 구성할 수 있는 유창한 API를 제공합니다. 여기서 제가 해야 할 일은 핸들러를 추가하는 것뿐입니다. 핸들러를 추가하기만 하면 됩니다. 핸들러 메서드는 핸들러 체인을 매개변수로 하는 함수를 받습니다. 그 체인에서 핸들러를 만들 수 있습니다:

애플리케이션을 시작하고 localhost:5050/hello로 이동하면 안녕하세요 메시지가 표시됩니다. Couchbase 부분으로 이동합니다.

카우치베이스 엔티티 모델

엔티티 모델은 버전 2.2.x에서 등장했습니다. Couchbase 어노테이션 @Id를 사용하여 엔티티를 쉽게 선언할 수 있습니다. 또한 엔티티 클래스에 인수가 없는 공용 생성자가 있는지, 결과 JSON 문서에서 원하는 필드에 대해 설정자와 게터를 사용할 수 있는지 확인해야 합니다. 사용자 이름, 나이, 이름, 성을 가진 사용자를 모델링하기 위해 다음 User 클래스를 사용합니다:

Id 어노테이션은 필수이며 문서의 키로 사용될 필드를 정의합니다. 필드 어노테이션을 사용하여 결과 JSON 문서에서 속성 이름을 변경할 수 있습니다. 또한 @Id 필드는 JSON에 포함되지 않는다는 점에 유의하세요.

이 엔티티 클래스는 다음과 같이 사용해야 합니다. 엔티티도큐먼트. 사용법이 매우 유사합니다. 기타 문서 구현 를 사용할 수 있습니다. 다음 코드는 Couchbase에서 JSON 문서를 생성합니다:

다음 문서를 생성합니다:

키: ldoguin

값입니다: { "lName": "도구인", "나이": 31, "fName": "Laurent" }

이 코드는 현재 차단 및 동기화 중입니다. 이것이 나쁜가요? 상황에 따라 다릅니다.) 위의 헬로 월드 대신에 실행되는 경우처럼 블로킹이 아닌 스레드에서 블로킹 코드를 실행하고 있다면 다른 모든 것을 차단하는 것과 마찬가지입니다. 그리고 그것은 나쁜 일이 될 수 있습니다. 이 스레드는 모든 요청을 처리하는 이벤트 루프를 관리하기 때문입니다. 제가 찾은 이 블로그 게시물 이를 이해하는 데 매우 유용합니다.

Ratpack의 목표 중 하나는 차단 코드 사용을 돕는 것입니다. 비동기, 비차단 핸들러. Ratpack 사용 약속 를 비동기 코드를 관리하는 방법으로 사용할 수 있습니다. 또한 함수를 인수로 받아 프로미스를 반환하는 블로킹 프리미티브도 제공합니다. 이 함수는 블로킹 코드를 실행합니다. 여기에서는 localhost:5050/create URL을 누르면 사용자를 생성하고 localhost:5050/get URL을 누르면 사용자를 반환하는 예제가 있습니다:

이 API가 역대 최악으로 설계되었다는 사실은 제쳐두고, Ratpack으로 비동기 핸들러에서 차단, 동기 코드를 실행하는 방법에 대한 아이디어를 얻을 수 있을 것입니다. 기존 애플리케이션을 Ratpack으로 마이그레이션하기 위한 첫 번째 단계입니다.

하지만 이 예제는 RxJava 기반 SDK의 모든 장점을 보여주지는 못합니다. 그래서 다음 포스트에서는 RxJava와 Ratpack을 비동기 버전의 리포지토리와 함께 사용하는 방법을 보여드리겠습니다.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 로랑 도귄

Laurent는 파리에 사는 괴짜 금속공학도입니다. 주로 Java로 코드를 작성하고 AsciiDoc으로 구조화된 텍스트를 작성하며 데이터, 리액티브 프로그래밍 및 기타 유행어에 대해 자주 이야기합니다. 또한 Clever Cloud와 Nuxeo의 개발자 옹호자로 활동하며 해당 커뮤니티가 더 크고 강력하게 성장할 수 있도록 자신의 시간과 전문성을 바쳤습니다. 현재 Couchbase에서 개발자 관계를 운영하고 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.