{"id":121625,"date":"2024-04-17T11:28:23","date_gmt":"2024-04-17T08:28:23","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=121625"},"modified":"2024-04-17T11:28:25","modified_gmt":"2024-04-17T08:28:25","slug":"micronaut-java-api-versioning","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html","title":{"rendered":"Micronaut Java API versioning"},"content":{"rendered":"<p><a href=\"https:\/\/micronaut.io\/\" target=\"_blank\" rel=\"noopener\">Micronaut<\/a> is a modern JVM-based framework designed for building lightweight, modular, and highly efficient applications. It offers features like dependency injection, AOP, and built-in support for cloud-native development, enabling rapid development and deployment. Micronaut&#8217;s ahead-of-time compilation, minimal runtime overhead, and reflection-free design result in fast startup times and low memory consumption. With support for multiple languages including Java, Kotlin, and Groovy, along with seamless integration with popular tools and libraries, Micronaut empowers developers to create scalable and resilient microservices and serverless applications with ease. Let us delve into understanding Java API Versioning with Micronaut, ensuring seamless version control.<\/p>\n<h2><a name=\"understanding-api-versioning\"><\/a>1. Understanding API Versioning<\/h2>\n<p><strong>API versioning<\/strong> is the practice of managing changes to an API by maintaining multiple versions of the API simultaneously. As software evolves, new features are added, existing features are modified, and sometimes features are deprecated or removed. API versioning helps ensure that clients relying on the API continue to function as expected even as changes occur.<\/p>\n<h3>1.1 Importance of API Versioning<\/h3>\n<p>API versioning offers several key benefits:<\/p>\n<ul>\n<li>Backward compatibility: Versioning allows existing clients to continue using the API without disruption, even as new versions are introduced.<\/li>\n<li>Flexibility: Different versions can coexist, enabling clients to choose the version that best suits their needs or constraints.<\/li>\n<li>Deprecation management: Deprecated features can be phased out gradually, giving clients time to adapt before eventual removal.<\/li>\n<li>Improved communication: Clear versioning helps developers understand the changes and plan accordingly, reducing confusion and potential errors.<\/li>\n<\/ul>\n<h3>1.2 Pros and Cons of API Versioning<\/h3>\n<h4>1.2.1 Pros<\/h4>\n<ul>\n<li>Enables backward compatibility: API versioning allows existing clients to continue functioning as expected even as changes are introduced to the API.<\/li>\n<li>Flexibility for clients: Clients can choose the API version that best suits their needs, ensuring compatibility with their systems.<\/li>\n<li>Deprecation management: Deprecated features can be phased out gradually, giving clients time to adapt before eventual removal.<\/li>\n<li>Improved communication: Clear versioning helps developers understand changes and plan accordingly, reducing confusion and potential errors.<\/li>\n<li>Supports experimentation: Different versions allow developers to experiment with new features or improvements without impacting existing clients.<\/li>\n<\/ul>\n<h4>1.2.2 Cons<\/h4>\n<ul>\n<li>Complexity: Managing multiple versions of an API can add complexity to development, testing, and maintenance processes.<\/li>\n<li>Increased overhead: Each version may require additional resources and effort to maintain, potentially leading to increased costs.<\/li>\n<li>Version proliferation: Introducing too many versions can lead to confusion and fragmentation, both for developers and clients.<\/li>\n<li>Compatibility challenges: Ensuring compatibility between different versions and managing dependencies can be challenging, especially in complex systems.<\/li>\n<li>API discoverability: With multiple versions, it may be harder for clients to discover and understand the available endpoints and their respective functionalities.<\/li>\n<\/ul>\n<h2><a name=\"api-versioning-strategies-in-micronaut-framework\"><\/a>2. API Versioning Strategies in Micronaut<\/h2>\n<p>In Micronaut, there are various strategies for implementing API versioning to manage changes effectively.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<h3>2.1 URI Versioning<\/h3>\n<p>In URI versioning, the version information is included directly in the URI. This strategy provides a clear indication of the API version being accessed, but it can clutter the URI and make it less readable.<\/p>\n<pre class=\"brush:java; wrap-lines:false;\">\n@Controller(\"\/api\/v1\/books\")\npublic class BookControllerV1 {\n    @Get(\"\/\")\n    public List&lt;Book&gt; getAllBooks() {\n        \/\/ Implementation\n    }\n}\n<\/pre>\n<h3>2.2 Header Versioning<\/h3>\n<p>With header versioning, the version information is included in the request header. This approach keeps URIs clean and versioning information separate from the resource path, promoting better URI design. However, it requires additional header parsing logic.<\/p>\n<pre class=\"brush:java; wrap-lines:false;\">\n@Controller(\"\/api\/books\")\npublic class BookController {\n    @Get(\"\/\")\n    public List&lt;Book&gt; getAllBooks(@Header(\"X-API-Version\") int version) {\n        \/\/ Implementation based on version\n    }\n}\n<\/pre>\n<h3>2.3 Media Type Versioning<\/h3>\n<p>Media type versioning embeds version information in the media type of the request or response. This allows clients and servers to negotiate the appropriate version based on the requested media type. It provides flexibility but may require clients to explicitly specify the desired version.<\/p>\n<pre class=\"brush:java; wrap-lines:false;\">\n@Controller(\"\/api\/books\")\npublic class BookController {\n    @Get(value = \"\/\", produces = \"application\/vnd.company.api-v1+json\")\n    public List&lt;Book&gt; getAllBooksV1() {\n        \/\/ Implementation for version 1\n    }\n    \n    @Get(value = \"\/\", produces = \"application\/vnd.company.api-v2+json\")\n    public List&lt;BookV2&gt; getAllBooksV2() {\n        \/\/ Implementation for version 2\n    }\n}\n<\/pre>\n<h3>2.4 Resource-Based Versioning<\/h3>\n<p>In resource-based versioning, different versions of the API are represented by separate resource paths. This approach keeps the implementation of different versions isolated and allows for a clear separation of concerns. However, it can lead to a proliferation of endpoints and may require additional routing logic.<\/p>\n<pre class=\"brush:java; wrap-lines:false;\">\n@Controller(\"\/api\/v1\/books\")\npublic class BookControllerV1 {\n    @Get(\"\/\")\n    public List&lt;Book&gt; getAllBooks() {\n        \/\/ Implementation for version 1\n    }\n}\n\n@Controller(\"\/api\/v2\/books\")\npublic class BookControllerV2 {\n    @Get(\"\/\")\n    public List&lt;BookV2&gt; getAllBooks() {\n        \/\/ Implementation for version 2\n    }\n}\n<\/pre>\n<h2><a name=\"conclusion\"><\/a>2. Conclusion<\/h2>\n<p>Choosing the right API versioning strategy in Micronaut is crucial for maintaining compatibility, flexibility, and ease of development. Each strategy has its advantages and trade-offs, and the choice depends on factors such as the project&#8217;s requirements, client preferences, and API design principles. By carefully considering these factors and leveraging the appropriate versioning strategy, developers can ensure a smooth and sustainable evolution of their APIs, fostering a positive experience for both developers and consumers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Micronaut is a modern JVM-based framework designed for building lightweight, modular, and highly efficient applications. It offers features like dependency injection, AOP, and built-in support for cloud-native development, enabling rapid development and deployment. Micronaut&#8217;s ahead-of-time compilation, minimal runtime overhead, and reflection-free design result in fast startup times and low memory consumption. With support for multiple &hellip;<\/p>\n","protected":false},"author":26931,"featured_media":112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[2158,1804],"class_list":["post-121625","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-api-versioning","tag-micronaut"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Micronaut Java API versioning - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Java API Versioning Micronaut: Easily manage Java API versions using Micronaut framework. Ensure seamless integration with version control.\" \/>\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.javacodegeeks.com\/micronaut-java-api-versioning.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Micronaut Java API versioning - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Java API Versioning Micronaut: Easily manage Java API versions using Micronaut framework. Ensure seamless integration with version control.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2024-04-17T08:28:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-17T08:28:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Yatin Batra\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Yatin Batra\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/micronaut-java-api-versioning.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/micronaut-java-api-versioning.html\"},\"author\":{\"name\":\"Yatin Batra\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/cda31a4c1965373fed40c8907dc09b8d\"},\"headline\":\"Micronaut Java API versioning\",\"datePublished\":\"2024-04-17T08:28:23+00:00\",\"dateModified\":\"2024-04-17T08:28:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/micronaut-java-api-versioning.html\"},\"wordCount\":694,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/micronaut-java-api-versioning.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"keywords\":[\"API versioning\",\"Micronaut\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/micronaut-java-api-versioning.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/micronaut-java-api-versioning.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/micronaut-java-api-versioning.html\",\"name\":\"Micronaut Java API versioning - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/micronaut-java-api-versioning.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/micronaut-java-api-versioning.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"datePublished\":\"2024-04-17T08:28:23+00:00\",\"dateModified\":\"2024-04-17T08:28:25+00:00\",\"description\":\"Java API Versioning Micronaut: Easily manage Java API versions using Micronaut framework. Ensure seamless integration with version control.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/micronaut-java-api-versioning.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/micronaut-java-api-versioning.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/micronaut-java-api-versioning.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"java-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/micronaut-java-api-versioning.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Micronaut Java API versioning\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/cda31a4c1965373fed40c8907dc09b8d\",\"name\":\"Yatin Batra\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/Yatin.batra_.jpg\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/Yatin.batra_.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/Yatin.batra_.jpg\",\"caption\":\"Yatin Batra\"},\"description\":\"An experience full-stack engineer well versed with Core Java, Spring\\\/Springboot, MVC, Security, AOP, Frontend (Angular &amp; React), and cloud technologies (such as AWS, GCP, Jenkins, Docker, K8).\",\"sameAs\":[\"https:\\\/\\\/www.javacodegeeks.com\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/yatin-batra\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Micronaut Java API versioning - Java Code Geeks","description":"Java API Versioning Micronaut: Easily manage Java API versions using Micronaut framework. Ensure seamless integration with version control.","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.javacodegeeks.com\/micronaut-java-api-versioning.html","og_locale":"en_US","og_type":"article","og_title":"Micronaut Java API versioning - Java Code Geeks","og_description":"Java API Versioning Micronaut: Easily manage Java API versions using Micronaut framework. Ensure seamless integration with version control.","og_url":"https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2024-04-17T08:28:23+00:00","article_modified_time":"2024-04-17T08:28:25+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","type":"image\/jpeg"}],"author":"Yatin Batra","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Yatin Batra","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html"},"author":{"name":"Yatin Batra","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/cda31a4c1965373fed40c8907dc09b8d"},"headline":"Micronaut Java API versioning","datePublished":"2024-04-17T08:28:23+00:00","dateModified":"2024-04-17T08:28:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html"},"wordCount":694,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","keywords":["API versioning","Micronaut"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html","url":"https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html","name":"Micronaut Java API versioning - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","datePublished":"2024-04-17T08:28:23+00:00","dateModified":"2024-04-17T08:28:25+00:00","description":"Java API Versioning Micronaut: Easily manage Java API versions using Micronaut framework. Ensure seamless integration with version control.","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","width":150,"height":150,"caption":"java-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/micronaut-java-api-versioning.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"Micronaut Java API versioning"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/cda31a4c1965373fed40c8907dc09b8d","name":"Yatin Batra","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/12\/Yatin.batra_.jpg","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/12\/Yatin.batra_.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/12\/Yatin.batra_.jpg","caption":"Yatin Batra"},"description":"An experience full-stack engineer well versed with Core Java, Spring\/Springboot, MVC, Security, AOP, Frontend (Angular &amp; React), and cloud technologies (such as AWS, GCP, Jenkins, Docker, K8).","sameAs":["https:\/\/www.javacodegeeks.com"],"url":"https:\/\/www.javacodegeeks.com\/author\/yatin-batra"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/121625","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/26931"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=121625"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/121625\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=121625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=121625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=121625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}