{"id":249,"date":"2015-01-30T16:35:01","date_gmt":"2015-01-30T16:35:01","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/"},"modified":"2015-01-30T16:35:01","modified_gmt":"2015-01-30T16:35:01","slug":"intro-spring-data-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/intro-spring-data-couchbase\/","title":{"rendered":"An Intro to Spring Data Couchbase"},"content":{"rendered":"<h1 class=\"wp-block-heading\">An Intro to Spring Data Couchbase<\/h1>\n\n\n\n<p>Right now I am trying to get an understanding of who is the Couchbase community, including how many people read these blos posts, follow us on our social network pages, ask questions on our forum, our mailing lists,etc. Of course, I need to store all this time-series data somewhere.<\/p>\n\n\n\n<p>You guessed it: I\u2019m going to be writing about storing time-based metrics in Couchbase. I will be using Java and Spring to do so, because there is a pretty cool project called <a href=\"https:\/\/projects.spring.io\/spring-data-couchbase\/\">spring-data-couchbase<\/a> that is going to make things much easier for me. So, over three blog posts I\u2019ll explain how I did it.<\/p>\n\n\n\n<p>First a couple of word about <a href=\"https:\/\/docs.spring.io\/spring\/docs\/current\/spring-framework-reference\/html\/overview.html\">Spring<\/a>. From their own website:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>The Spring Framework is a Java platform that provides comprehensive infrastructure support for developing Java applications. Spring handles the infrastructure so you can focus on your application.<\/p>\n<\/blockquote>\n\n\n\n<p>You could say that its purpose is for you to write mostly business code and focus on what you want to do, than writing infrastructure code and focusing on how to do it. A good thing is that you don\u2019t have to buy into the whole platform. Spring is made of many different modules. You can choose the one you want to use. Interaction between these modules and your code is mostly driven by Inversion of Control, also called <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/dependency-injection-aspnet-couchbase\/\">Dependency Injection<\/a>, more on that later.<\/p>\n\n\n\n<p>If you are not familiar with Spring I really invite you to look at the <a href=\"https:\/\/spring.io\/projects\">Spring Projects page<\/a> to get a quick overview of all the topics they address. Now let&#8217;s begin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Boot-strapping dependencies<\/h2>\n\n\n\n<p>First up I need to bootstrap my project with the appropriate dependencies. Since I\u2019m using Spring, I might as well just use Spring Boot to do so. It provides an opiniated way of building Spring applications, it assumes several choices and favor convention over configuration. That is perfect for the small project I am writing.<\/p>\n\n\n\n<p>The first step to start a new Spring Boot project would be to go to <a href=\"https:\/\/start.spring.io\/\">start.spring.io<\/a>. It\u2019s an assistant that lets you choose the dependencies you want to start your project with. The thing is, there is no possibility to choose spring-data-couchbase right now. So I ended up doing my own pom file. It\u2019s very simple:<\/p>\n\n\n\n<p>You can see that I am using the spring-boot-starter-social-facebook and spring-social-twitter projects. The Spring social projects are here to help you connect to SaaS API providers like Facebook, Twitter, Linkedin etc. The spring-boot-starter-* projects can be seen as a bootstrap POM that comes with the appropriate dependencies.<\/p>\n\n\n\n<p>And if you would like a spring-boot-starter-data-couchbase entry on the start.spring.io site please speak up on our <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/forums\/\">forum<\/a> or by commenting this post.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration<\/h2>\n\n\n\n<p>I haven\u2019t used Spring for a long while and I had it in my mind that all the configuration meant dealing with tedious XML files. I am happy to have discovered that things have changed and you can now declare configuration only with annotations. Yay!<\/p>\n\n\n\n<p>Now that dependencies are all set, let\u2019s write some code! Let\u2019s start by creating an Application class extending the AbstractCouchbaseConfiguration class.<\/p>\n\n\n\n<p>You can see that I implement three method, all needed to configure a Couchbase client connection to a bucket. They provide a list of URIs for the cluster nodes, the name and the password of the bucket.<\/p>\n\n\n\n<p>To avoid hardcoding these values into the Java class, I\u2019ve created an application.properties file under the resources folder. Its values are automatically picked up by Spring thanks to the @Value annotation. Pay attention to the \u2018$\u2019 sign used to retrieve values from a properties file. The \u2018#\u2019 sign would be used to evaluate traditional EL.<\/p>\n\n\n\n<p>Make sure the @Configuration and @EnableAutoConfiguration annotations are present as they areneeded at runtime. The first one makes sure the beans you declared on this class will be picked by Spring. The second one gives you an automatically configured Application context to make sure you can run the SpringApplication.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A Word About IoC and Abstract Couchbase Configuration<\/h2>\n\n\n\n<p>One of the main paradigms available with Spring is IoC(<a href=\"https:\/\/en.wikipedia.org\/wiki\/Inversion_of_control\">Inversion of Control<\/a>). It lets you inject objects. It means that instantiation of the object has been taken care of for you. The AbstractCouchbaseConfiguration class that we extend defines some Beans that can be injected anywhere in the application.<\/p>\n\n\n\n<p>Now take a look at the commandLineRunner method. It\u2019s annotated with @Bean and returns a CommandLineRunner instance (yes it\u2019s an anonymous class but it uses Lambda expression, thank you Java8). It means that this CommandLineRunner will be picked up by the Spring Framework. Its code will be executed by the SpringApplication.run call in the main method. And because it\u2019s a Spring Bean, IoC works right off and the CouchbaseClient bean will be injected automatically. You just have to pass it as a method parameter.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Making Sure it Works<\/h2>\n\n\n\n<p>Just to make sure the configuration works and that everything is ok, I will create a simple JSON object, store it in Couchbase, retrieve it from Couchbase and then log it.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\r\n    public static void main(String[] args) {\r\n        ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args);\r\n        ctx.close();\r\n    }\r\n\r\n    @Bean\r\n    CommandLineRunner commandLineRunner(CouchbaseClient couchbaseClient) {\r\n        return args -&gt; {\r\n            twitterService.update(&quot;Couchbase&quot;);\r\n            couchbaseClient.add(&quot;aKey&quot;, &quot;{&#039;json&#039;:&#039;object&#039;}&quot;);\r\n            Object aKey = couchbaseClient().get(&quot;aKey&quot;);\r\n            log.info(aKey);\r\n        };\r\n    }\r\n<\/code><\/pre>\n\n\n\n<p>It\u2019s just those four lines of code you see in the <a href=\"https:\/\/docs.spring.io\/spring-boot\/docs\/current\/reference\/htmlsingle\/#boot-features-command-line-runner\">CommandLineRunner<\/a>. Now everything should work. If I go to the Couchbase web admin interface, I can see the document in the default bucket.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/documents.png\" width=\"624\" height=\"118\"><\/p>\n\n\n\n<p>Now I know how to bootstrap a Spring project, configured a Couchbase connection and store objects in Couchbase. I am ready to use the spring social connectors and store my metrics. And that\u2019s for the next blog post. Don\u2019t hesitate to comment and share this one :)<\/p>","protected":false},"excerpt":{"rendered":"<p>An Intro to Spring Data Couchbase Right now I am trying to get an understanding of who is the Couchbase community, including how many people read these blos posts, follow us on our social network pages, ask questions on our forum, our mailing lists,etc. Of course, I need to store all this time-series data somewhere. [&hellip;]<\/p>\n","protected":false},"author":49,"featured_media":18,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[109],"ppma_author":[110],"class_list":["post-249","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-spring"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>An Intro to Spring Data Couchbase - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/intro-spring-data-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An Intro to Spring Data Couchbase\" \/>\n<meta property=\"og:description\" content=\"An Intro to Spring Data Couchbase Right now I am trying to get an understanding of who is the Couchbase community, including how many people read these blos posts, follow us on our social network pages, ask questions on our forum, our mailing lists,etc. Of course, I need to store all this time-series data somewhere. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/intro-spring-data-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-01-30T16:35:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Laurent Doguin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ldoguin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Laurent Doguin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/intro-spring-data-couchbase\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/intro-spring-data-couchbase\\\/\"},\"author\":{\"name\":\"Laurent Doguin\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/c0aa9b8f1ed51b7a9e2f7cb755994a5e\"},\"headline\":\"An Intro to Spring Data Couchbase\",\"datePublished\":\"2015-01-30T16:35:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/intro-spring-data-couchbase\\\/\"},\"wordCount\":939,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/intro-spring-data-couchbase\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"keywords\":[\"spring\"],\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/intro-spring-data-couchbase\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/intro-spring-data-couchbase\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/intro-spring-data-couchbase\\\/\",\"name\":\"An Intro to Spring Data Couchbase - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/intro-spring-data-couchbase\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/intro-spring-data-couchbase\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-01-30T16:35:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/intro-spring-data-couchbase\\\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/intro-spring-data-couchbase\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/intro-spring-data-couchbase\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/intro-spring-data-couchbase\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"An Intro to Spring Data Couchbase\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"width\":\"1024\",\"height\":\"1024\",\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/c0aa9b8f1ed51b7a9e2f7cb755994a5e\",\"name\":\"Laurent Doguin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g12929ce99397769f362b7a90d6b85071\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g\",\"caption\":\"Laurent Doguin\"},\"description\":\"Laurent is a nerdy metal head who lives in Paris. He mostly writes code in Java and structured text in AsciiDoc, and often talks about data, reactive programming and other buzzwordy stuff. He is also a former Developer Advocate for Clever Cloud and Nuxeo where he devoted his time and expertise to helping those communities grow bigger and stronger. He now runs Developer Relations at Couchbase.\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/ldoguin\"],\"honorificPrefix\":\"Mr\",\"birthDate\":\"1985-06-07\",\"gender\":\"male\",\"award\":[\"Devoxx Champion\",\"Couchbase Legend\"],\"knowsAbout\":[\"Java\"],\"knowsLanguage\":[\"English\",\"French\"],\"jobTitle\":\"Director Developer Relation & Strategy\",\"worksFor\":\"Couchbase\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ko\\\/author\\\/laurent-doguin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"An Intro to Spring Data Couchbase - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/intro-spring-data-couchbase\/","og_locale":"ko_KR","og_type":"article","og_title":"An Intro to Spring Data Couchbase","og_description":"An Intro to Spring Data Couchbase Right now I am trying to get an understanding of who is the Couchbase community, including how many people read these blos posts, follow us on our social network pages, ask questions on our forum, our mailing lists,etc. Of course, I need to store all this time-series data somewhere. [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/intro-spring-data-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-01-30T16:35:01+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Laurent Doguin","twitter_card":"summary_large_image","twitter_creator":"@ldoguin","twitter_misc":{"Written by":"Laurent Doguin","Est. reading time":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/"},"author":{"name":"Laurent Doguin","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c0aa9b8f1ed51b7a9e2f7cb755994a5e"},"headline":"An Intro to Spring Data Couchbase","datePublished":"2015-01-30T16:35:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/"},"wordCount":939,"commentCount":3,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","keywords":["spring"],"articleSection":["Uncategorized"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/","name":"An Intro to Spring Data Couchbase - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","datePublished":"2015-01-30T16:35:01+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/intro-spring-data-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"An Intro to Spring Data Couchbase"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","width":"1024","height":"1024","caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c0aa9b8f1ed51b7a9e2f7cb755994a5e","name":"Laurent Doguin","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g12929ce99397769f362b7a90d6b85071","url":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","caption":"Laurent Doguin"},"description":"Laurent is a nerdy metal head who lives in Paris. He mostly writes code in Java and structured text in AsciiDoc, and often talks about data, reactive programming and other buzzwordy stuff. He is also a former Developer Advocate for Clever Cloud and Nuxeo where he devoted his time and expertise to helping those communities grow bigger and stronger. He now runs Developer Relations at Couchbase.","sameAs":["https:\/\/x.com\/ldoguin"],"honorificPrefix":"Mr","birthDate":"1985-06-07","gender":"male","award":["Devoxx Champion","Couchbase Legend"],"knowsAbout":["Java"],"knowsLanguage":["English","French"],"jobTitle":"Director Developer Relation & Strategy","worksFor":"Couchbase","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/laurent-doguin\/"}]}},"acf":[],"authors":[{"term_id":110,"user_id":49,"is_guest":0,"slug":"laurent-doguin","display_name":"Laurent Doguin","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/49"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=249"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/249\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/18"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=249"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}