Spring 데이터 카우치베이스 소개
지금은 얼마나 많은 사람들이 블로그를 읽고, 소셜 네트워크 페이지에서 우리를 팔로우하고, 포럼, 메일링 리스트 등에서 질문을 하는지 등 Couchbase 커뮤니티가 누구인지 파악하려고 합니다. 물론 이 모든 시계열 데이터를 어딘가에 저장해야 합니다.
짐작하셨죠? 저는 Couchbase에 시간 기반 메트릭을 저장하는 방법에 대해 글을 쓸 예정입니다. 이를 위해 Java와 Spring을 사용할 예정입니다. 스프링 데이터 카우치베이스 를 사용하면 훨씬 더 쉽게 작업할 수 있습니다. 그래서 세 개의 블로그 게시물에 걸쳐 제가 어떻게 했는지 설명해 드리겠습니다.
먼저 다음 사항에 대해 몇 마디 말씀드리겠습니다. 봄. 자체 웹 사이트에서:
Spring 프레임워크는 Java 애플리케이션 개발을 위한 포괄적인 인프라 지원을 제공하는 Java 플랫폼입니다. Spring은 인프라를 처리하므로 애플리케이션에만 집중할 수 있습니다.
인프라 코드를 작성하고 그 방법에 집중하는 것보다 대부분 비즈니스 코드를 작성하고 하고 싶은 일에 집중하는 것이 목적이라고 할 수 있습니다. 좋은 점은 전체 플랫폼을 구매할 필요가 없다는 것입니다. Spring은 다양한 모듈로 구성되어 있습니다. 사용하고자 하는 모듈을 선택할 수 있습니다. 이러한 모듈과 코드 간의 상호 작용은 대부분 제어의 반전이라고도 하는 종속성 주입에 대한 자세한 내용은 나중에 설명합니다.
Spring에 익숙하지 않으시다면 스프링 프로젝트 페이지 를 클릭해 모든 주제에 대한 간략한 개요를 확인하세요. 이제 시작하겠습니다.
부트 스트랩 종속성
먼저 적절한 종속성으로 프로젝트를 부트스트랩해야 합니다. 저는 Spring을 사용하고 있으므로 Spring Boot를 사용하는 것이 좋습니다. 이는 Spring 애플리케이션을 빌드하는 객관적인 방법을 제공하며, 몇 가지 선택 사항을 가정하고 구성보다 관습을 선호합니다. 제가 작성 중인 소규모 프로젝트에 딱 맞습니다.
새 Spring Boot 프로젝트를 시작하는 첫 번째 단계는 다음 주소로 이동하는 것입니다. start.spring.io. 프로젝트를 시작할 종속성을 선택할 수 있도록 도와주는 도우미입니다. 문제는 지금 당장 스프링 데이터 카우치베이스를 선택할 수 없다는 것입니다. 그래서 저는 결국 직접 폼 파일을 만들었습니다. 아주 간단합니다:
스프링 부트 스타터 소셜 페이스북과 스프링 소셜 트위터 프로젝트를 사용하고 있는 것을 볼 수 있습니다. Spring 소셜 프로젝트는 페이스북, 트위터, 링크드인 등과 같은 SaaS API 제공업체에 연결할 수 있도록 도와줍니다. spring-boot-starter-* 프로젝트는 적절한 종속성과 함께 제공되는 부트스트랩 POM으로 볼 수 있습니다.
start.spring.io 사이트에서 스프링 부팅 스타터 데이터 카우치베이스 항목이 필요하시면 포럼 또는 이 게시물에 댓글을 달면 됩니다.
구성
저는 오랫동안 Spring을 사용하지 않았기 때문에 모든 구성이 지루한 XML 파일을 처리하는 것을 의미한다고 생각했습니다. 이제 상황이 바뀌었고 이제 주석으로만 구성을 선언할 수 있다는 사실을 알게 되어 기쁩니다. 야호!
이제 종속성이 모두 설정되었으니 코드를 작성해 보겠습니다! 먼저 AbstractCouchbaseConfiguration 클래스를 확장하는 Application 클래스를 만들어 보겠습니다.
버킷에 대한 Couchbase 클라이언트 연결을 구성하는 데 필요한 세 가지 방법을 구현한 것을 볼 수 있습니다. 이들은 클러스터 노드에 대한 URI 목록, 버킷의 이름 및 비밀번호를 제공합니다.
이러한 값을 Java 클래스에 하드코딩하지 않기 위해, 저는 resources 폴더 아래에 application.properties 파일을 만들었습니다. 이 값은 @Value 어노테이션 덕분에 Spring에서 자동으로 가져옵니다. 속성 파일에서 값을 검색하는 데 사용되는 '$' 기호에 주목하세요. '#' 기호는 기존 EL을 평가하는 데 사용됩니다.
런타임에 @Configuration 및 @EnableAutoConfiguration 어노테이션이 필요 없는지 확인하세요. 첫 번째는 이 클래스에서 선언한 빈이 Spring에 의해 선택되도록 합니다. 두 번째는 자동으로 구성된 애플리케이션 컨텍스트를 제공하여 SpringApplication을 실행할 수 있는지 확인합니다.
IoC 및 추상적인 Couchbase 구성에 대해 한마디
Spring에서 사용할 수 있는 주요 패러다임 중 하나는 IoC(제어의 반전). 객체를 주입할 수 있습니다. 즉, 객체의 인스턴스화가 자동으로 처리된다는 뜻입니다. 우리가 확장하는 AbstractCouchbaseConfiguration 클래스는 애플리케이션의 어느 곳에서나 주입할 수 있는 몇 가지 Bean을 정의합니다.
이제 명령줄러너 메서드를 살펴보겠습니다. 이 메서드는 @Bean으로 주석을 달고 CommandLineRunner 인스턴스를 반환합니다(익명 클래스이지만 Lambda 표현식을 사용합니다. Java8에 감사드립니다). 즉, 이 CommandLineRunner는 Spring 프레임워크에 의해 선택됩니다. 이 코드는 메인 메서드에서 SpringApplication.run 호출에 의해 실행됩니다. 그리고 Spring Bean이기 때문에 IoC가 바로 작동하고 CouchbaseClient 빈이 자동으로 주입됩니다. 메소드 매개변수로 전달하기만 하면 됩니다.
작동하는지 확인하기
구성이 제대로 작동하고 모든 것이 정상인지 확인하기 위해 간단한 JSON 객체를 생성하여 CouchBase에 저장하고 CouchBase에서 검색한 다음 로깅해 보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public 정적 void 메인(문자열[] args) { 구성 가능한 애플리케이션 컨텍스트 ctx = 스프링 애플리케이션.실행(애플리케이션.클래스, args); ctx.닫기(); } @Bean CommandLineRunner commandLineRunner(카우치베이스클라이언트 카우치베이스클라이언트) { 반환 args -> { 트위터 서비스.업데이트("Couchbase"); 카우치베이스클라이언트.추가("aKey", "{'json':'object'}"); 개체 aKey = 카우치베이스클라이언트().get("aKey"); 로그.정보(aKey); }; } |
에 표시되는 네 줄의 코드만 있으면 됩니다. CommandLineRunner. 이제 모든 것이 작동합니다. Couchbase 웹 관리자 인터페이스로 이동하면 기본 버킷에 있는 문서를 볼 수 있습니다.
이제 Spring 프로젝트를 부트스트랩하고, Couchbase 연결을 구성하고, Couchbase에 객체를 저장하는 방법을 알았습니다. 이제 Spring 소셜 커넥터를 사용하고 메트릭을 저장할 준비가 되었습니다. 다음 블로그 포스팅은 여기까지입니다. 주저하지 마시고 댓글을 달고 공유해 주세요 :)
공유해 주셔서 감사합니다, 로랑. 주목할 만한 점은 다음과 같습니다. 지속적인 노력 를 사용하여 Spring 데이터 카우치베이스를 대상으로 하는 전용 Boot 스타터 모듈을 추가할 수 있습니다. 이렇게 하면 pom.xml의 설정이 약간 간소화되고 애플리케이션 구성도 자동으로 기본값으로 설정됩니다.
pom.xml에 대해 말하자면, 꼭 필요하지 않은 부분이 꽤 포함되어 있어 제거하면 조금 덜 위협적일 수 있습니다:
1. Boot GA 버전을 사용하는 경우 리포지토리를 선언할 필요가 없습니다.
2. 프로젝트 소스 인코딩은 이미 Boot 부모 퐁에 의해 구성되어 있습니다.
스프링-데이터-커먼스는 스프링-데이터-카우치베이스에서 일시적으로 가져오는 것이므로 반드시 선언할 필요는 없습니다.
이렇게 하면 pom.xml의 크기가 거의 절반으로 줄어들고 종속성 3개와 플러그인 선언으로 요약됩니다. 제 취향에는 여전히 충분한 XML이지만 사람들이 Maven에 대해 불평할 일은 줄어듭니다.)
다음 에피소드가 기대됩니다!
Couchbase DB에 대한 상태 표시기가 없는 것 같습니다.
안녕하세요 스프링 데이터 jpa를 사용하여 카우치베이스의 문서에 첨부 파일을 추가하고 싶습니다. 하지만 첨부 파일에 대한 저장 또는 업데이트와 같은 방법이 없습니다.