{"id":3798,"date":"2024-04-29T09:23:00","date_gmt":"2024-04-29T09:23:00","guid":{"rendered":"https:\/\/cnsdrive.com\/cnnewsite\/?p=3798"},"modified":"2024-12-27T10:52:34","modified_gmt":"2024-12-27T10:52:34","slug":"database-routing-in-spring-boot","status":"publish","type":"post","link":"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/","title":{"rendered":"Database Routing in Spring Boot"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"3798\" class=\"elementor elementor-3798\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fe45108 e-con-full about-us-banner-parent e-flex e-con e-parent\" data-id=\"fe45108\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-44468ef common-banner e-flex e-con-boxed e-con e-child\" data-id=\"44468ef\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8b4d320 elementor-widget elementor-widget-heading\" data-id=\"8b4d320\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.23.0 - 25-07-2024 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h6 class=\"elementor-heading-title elementor-size-default\">Blog<\/h6>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-be4c728 service-data-bannner-parent e-flex e-con-boxed e-con e-child\" data-id=\"be4c728\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-33d0724 elementor-widget elementor-widget-heading\" data-id=\"33d0724\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\nDatabase Routing in Spring Boot<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-04fb042 looking-main-parent e-flex e-con-boxed e-con e-parent\" data-id=\"04fb042\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-5987a01 e-con-full looking-first looking-child e-flex e-con e-child\" data-id=\"5987a01\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-516d7db elementor-widget elementor-widget-text-editor\" data-id=\"516d7db\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.23.0 - 25-07-2024 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p style=\"text-align: center;\">Sometimes when building services, we might need to connect to different data sources at the same time. This can be done while the service is running with just one instance.<\/p><p style=\"text-align: center;\">Spring offers a helpful tool called AbstractRoutingDataSource that allows us to choose the right data source dynamically. A great example of this is with databases that have separate readers and writers. For instance, in Amazon\u2019s Aurora MySQL database, you might have a master database for writing data and separate replica databases for reading it. The replicas eventually catch up to the master, keeping the data consistent.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a972326 e-con-full looking-second looking-child e-flex e-con e-child\" data-id=\"a972326\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-243db6f elementor-widget elementor-widget-text-editor\" data-id=\"243db6f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>DATABASE OTIMIZATION<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-83269b5 ui-ux-images-parent e-flex e-con-boxed e-con e-parent\" data-id=\"83269b5\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-feb415a e-con-full e-flex e-con e-child\" data-id=\"feb415a\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d5d9124 elementor-widget elementor-widget-image\" data-id=\"d5d9124\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.23.0 - 25-07-2024 *\/\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"661\" src=\"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/04\/Database_Routing-1024x661.png\" class=\"attachment-large size-large wp-image-11062\" alt=\"\" srcset=\"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/04\/Database_Routing-1024x661.png 1024w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/04\/Database_Routing-300x194.png 300w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/04\/Database_Routing-768x496.png 768w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/04\/Database_Routing.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-076e501 elementor-widget elementor-widget-image\" data-id=\"076e501\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"692\" height=\"800\" src=\"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/06\/database-db.jpg\" class=\"attachment-large size-large wp-image-3822\" alt=\"\" srcset=\"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/06\/database-db.jpg 692w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/06\/database-db-260x300.jpg 260w\" sizes=\"(max-width: 692px) 100vw, 692px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-50c2d2e e-con-full services-bussiness-parent blog_content career-accordian-parent database-routing-accordian e-flex e-con e-parent\" data-id=\"50c2d2e\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-b802ec9 services-bussiness-content-parent e-flex e-con-boxed e-con e-child\" data-id=\"b802ec9\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7c40d0f elementor-widget elementor-widget-heading\" data-id=\"7c40d0f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h6 class=\"elementor-heading-title elementor-size-default\">Let\u2019s take a look at the essential components needed to implement database routing:<\/h6>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1a0b4c9 elementor-widget elementor-widget-accordion\" data-id=\"1a0b4c9\" data-element_type=\"widget\" data-widget_type=\"accordion.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.23.0 - 25-07-2024 *\/\n.elementor-accordion{text-align:start}.elementor-accordion .elementor-accordion-item{border:1px solid #d5d8dc}.elementor-accordion .elementor-accordion-item+.elementor-accordion-item{border-top:none}.elementor-accordion .elementor-tab-title{margin:0;padding:15px 20px;font-weight:700;line-height:1;cursor:pointer;outline:none}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{display:inline-block;width:1.5em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon svg{width:1em;height:1em}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-right{float:right;text-align:right}.elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-left{float:left;text-align:left}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-closed{display:block}.elementor-accordion .elementor-tab-title .elementor-accordion-icon .elementor-accordion-icon-opened,.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-closed{display:none}.elementor-accordion .elementor-tab-title.elementor-active .elementor-accordion-icon-opened{display:block}.elementor-accordion .elementor-tab-content{display:none;padding:15px 20px;border-top:1px solid #d5d8dc}@media (max-width:767px){.elementor-accordion .elementor-tab-title{padding:12px 15px}.elementor-accordion .elementor-tab-title .elementor-accordion-icon{width:1.2em}.elementor-accordion .elementor-tab-content{padding:7px 15px}}.e-con-inner>.elementor-widget-accordion,.e-con>.elementor-widget-accordion{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}<\/style>\t\t<div class=\"elementor-accordion\">\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-2731\" class=\"elementor-tab-title\" data-tab=\"1\" role=\"button\" aria-controls=\"elementor-tab-content-2731\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><svg class=\"e-font-icon-svg e-fas-plus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><svg class=\"e-font-icon-svg e-fas-minus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">Maven dependencies<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2731\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"1\" role=\"region\" aria-labelledby=\"elementor-tab-title-2731\"><p>You\u2019ll need Spring JDBC and MySQL Connector libraries to connect to your database (e.g., MySQL) and for Spring Boot to manage data access. The provided code includes these dependencies.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-2732\" class=\"elementor-tab-title\" data-tab=\"2\" role=\"button\" aria-controls=\"elementor-tab-content-2732\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><svg class=\"e-font-icon-svg e-fas-plus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><svg class=\"e-font-icon-svg e-fas-minus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">Custom Routing Logic<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2732\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"2\" role=\"region\" aria-labelledby=\"elementor-tab-title-2732\"><p>A central piece is a custom DataSource class that extends Spring\u2019s AbstractRoutingDataSource. This class determines which database (master or replica) to use for each request.<\/p><p>The logic for choosing the database is typically based on factors like read-only operations (reads go to replicas for better performance). In this example, a determineCurrentLookupKey method is implemented to decide the database based on the presence of the @Transactional(readOnly=true) annotation.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-2733\" class=\"elementor-tab-title\" data-tab=\"3\" role=\"button\" aria-controls=\"elementor-tab-content-2733\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><svg class=\"e-font-icon-svg e-fas-plus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><svg class=\"e-font-icon-svg e-fas-minus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">Configuring Data Sources<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2733\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"3\" role=\"region\" aria-labelledby=\"elementor-tab-title-2733\"><p>A Spring configuration class is created to define the different databases (master and replica) and their configurations. It uses a map to link database connection details with keys returned by the determineCurrentLookupKey method.<\/p><p>A default database is also specified in case the routing logic doesn\u2019t provide a clear choice. Additionally, configurations for connection pooling and read-only behavior for replicas are set up.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-2734\" class=\"elementor-tab-title\" data-tab=\"4\" role=\"button\" aria-controls=\"elementor-tab-content-2734\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><svg class=\"e-font-icon-svg e-fas-plus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><svg class=\"e-font-icon-svg e-fas-minus\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">Application properties<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2734\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"4\" role=\"region\" aria-labelledby=\"elementor-tab-title-2734\"><p>This file holds the actual connection details (URLs, usernames, passwords) for both the master and replica databases.<\/p><p>After setting up these components, our application should function as expected. However, there\u2019s a crucial consideration regarding the behavior of @Transactional with readOnly=true, which still directs calls to the writer instance due to Spring\u2019s Transaction Manager implementation. To override this behavior, we need to create a custom Transaction Manager implementation and inject it into the Spring context.<\/p><p>To see this setup in action, you can download the repository and make the necessary adjustments according to your requirements.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f01f89b blog_content database-routing-example e-flex e-con-boxed e-con e-parent\" data-id=\"f01f89b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9fc956d elementor-blockquote--skin-border elementor-blockquote--button-color-official elementor-widget elementor-widget-blockquote\" data-id=\"9fc956d\" data-element_type=\"widget\" data-widget_type=\"blockquote.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor-pro - v3.19.0 - 07-02-2024 *\/\n@charset \"UTF-8\";.entry-content blockquote.elementor-blockquote:not(.alignright):not(.alignleft),.entry-summary blockquote.elementor-blockquote{margin-right:0;margin-left:0}.elementor-widget-blockquote blockquote{margin:0;padding:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;quotes:none;border:0;font-style:normal;color:#3f444b}.elementor-widget-blockquote blockquote .e-q-footer:after,.elementor-widget-blockquote blockquote .e-q-footer:before,.elementor-widget-blockquote blockquote:after,.elementor-widget-blockquote blockquote:before,.elementor-widget-blockquote blockquote cite:after,.elementor-widget-blockquote blockquote cite:before{content:none}.elementor-blockquote{transition:.3s}.elementor-blockquote__author,.elementor-blockquote__content{margin-bottom:0;font-style:normal}.elementor-blockquote__author{font-weight:700}.elementor-blockquote .e-q-footer{margin-top:12px;display:flex;justify-content:space-between}.elementor-blockquote__tweet-button{display:flex;transition:.3s;color:#1da1f2;align-self:flex-end;line-height:1;position:relative;width:-moz-max-content;width:max-content}.elementor-blockquote__tweet-button:hover{color:#0967a0}.elementor-blockquote__tweet-button span{font-weight:600}.elementor-blockquote__tweet-button i,.elementor-blockquote__tweet-button span{vertical-align:middle}.elementor-blockquote__tweet-button i+span,.elementor-blockquote__tweet-button svg+span{margin-left:.5em}.elementor-blockquote__tweet-button svg{fill:#1da1f2;height:1em;width:1em}.elementor-blockquote__tweet-label{white-space:pre-wrap}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button{padding:.7em 1.2em;border-radius:100em;background-color:#1da1f2;color:#fff;font-size:15px}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover{background-color:#0967a0;color:#fff}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover:before,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button svg,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button svg{fill:#fff;height:1em;width:1em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button{padding:0;width:2em;height:2em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:before{content:\"\";border:.5em solid transparent;border-right-color:#1da1f2;position:absolute;left:-.8em;top:50%;transform:translateY(-50%) scaleY(.65);transition:.3s}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before{right:auto;left:-.8em;border-right-color:#1da1f2;border-left-color:transparent}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before{left:auto;right:-.8em;border-right-color:transparent;border-left-color:#1da1f2}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before{border-left-color:#0967a0}.elementor-blockquote--skin-boxed .elementor-blockquote{background-color:#f9fafa;padding:30px}.elementor-blockquote--skin-border .elementor-blockquote{border-color:#f9fafa;border-left:7px #f9fafa;border-style:solid;padding-left:20px}.elementor-blockquote--skin-quotation .elementor-blockquote:before{content:\"\u201c\";font-size:100px;color:#f9fafa;font-family:Times New Roman,Times,serif;font-weight:900;line-height:1;display:block;height:.6em}.elementor-blockquote--skin-quotation .elementor-blockquote__content{margin-top:15px}.elementor-blockquote--align-left .elementor-blockquote__content{text-align:left}.elementor-blockquote--align-left .elementor-blockquote .e-q-footer{flex-direction:row}.elementor-blockquote--align-right .elementor-blockquote__content{text-align:right}.elementor-blockquote--align-right .elementor-blockquote .e-q-footer{flex-direction:row-reverse}.elementor-blockquote--align-center .elementor-blockquote{text-align:center}.elementor-blockquote--align-center .elementor-blockquote .e-q-footer,.elementor-blockquote--align-center .elementor-blockquote__author{display:block}.elementor-blockquote--align-center .elementor-blockquote__tweet-button{margin-right:auto;margin-left:auto}<\/style>\t\t<blockquote class=\"elementor-blockquote\">\n\t\t\t<p class=\"elementor-blockquote__content\">\n\t\t\t\t<p class=\"dataset-example\">Example Repository \u2013 <a href=\"https:\/\/github.com\/kanakharaharsh\/db-routing-spring-boot\/tree\/main\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/kanakharaharsh\/db-routing-spring-boot\/tree\/main<\/a><\/p>\t\t\t<\/p>\n\t\t\t\t\t<\/blockquote>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-634519c related-blog-main-parent e-flex e-con-boxed e-con e-parent\" data-id=\"634519c\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-825827f elementor-widget elementor-widget-shortcode\" data-id=\"825827f\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-shortcode\"><div class=\"recent-post-outer\"><div class=\"container\"><h4> Recent Blogs <\/h4><div class=\"recent-post-inner\"><div class=\"recent-post-details\"><div class=\"recent-post-thumbnail\"><a href=\"https:\/\/cnsdrive.com\/cnnewsite\/healthtech-and-insuretech-revolutionizing-indias-healthcare-and-insurance-sectors\/\"><img decoding=\"async\" width=\"1920\" height=\"1493\" src=\"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/12\/DNA-1-1.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" srcset=\"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/12\/DNA-1-1.jpg 1920w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/12\/DNA-1-1-300x233.jpg 300w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/12\/DNA-1-1-1024x796.jpg 1024w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/12\/DNA-1-1-768x597.jpg 768w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/12\/DNA-1-1-1536x1194.jpg 1536w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/a><\/div><div class=\"recent-post-title\"><h5><a href=\"https:\/\/cnsdrive.com\/cnnewsite\/healthtech-and-insuretech-revolutionizing-indias-healthcare-and-insurance-sectors\/\">Healthtech and Insuretech: Revolutionizing India&#8217;s Healthcare and Insurance Sectors<\/a><\/h5><a class=\"case-study-btn\" href=\"https:\/\/cnsdrive.com\/cnnewsite\/healthtech-and-insuretech-revolutionizing-indias-healthcare-and-insurance-sectors\/\"><span>Read more<\/span><\/a><\/div><\/div><div class=\"recent-post-details\"><div class=\"recent-post-thumbnail\"><a href=\"https:\/\/cnsdrive.com\/cnnewsite\/a-coffee-manufacturers-journey-to-enhanced-operational-efficiency-and-significant-cost-savings\/\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1651\" src=\"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/10\/group-diverse-people-with-joining-hands-teamwork-scaled.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" srcset=\"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/10\/group-diverse-people-with-joining-hands-teamwork-scaled.jpg 2560w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/10\/group-diverse-people-with-joining-hands-teamwork-300x194.jpg 300w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/10\/group-diverse-people-with-joining-hands-teamwork-1024x661.jpg 1024w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/10\/group-diverse-people-with-joining-hands-teamwork-768x495.jpg 768w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/10\/group-diverse-people-with-joining-hands-teamwork-1536x991.jpg 1536w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/10\/group-diverse-people-with-joining-hands-teamwork-2048x1321.jpg 2048w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><\/div><div class=\"recent-post-title\"><h5><a href=\"https:\/\/cnsdrive.com\/cnnewsite\/a-coffee-manufacturers-journey-to-enhanced-operational-efficiency-and-significant-cost-savings\/\">A Coffee Manufacturer&#8217;s Journey to Enhanced Operational Efficiency and Significant Cost Savings<\/a><\/h5><a class=\"case-study-btn\" href=\"https:\/\/cnsdrive.com\/cnnewsite\/a-coffee-manufacturers-journey-to-enhanced-operational-efficiency-and-significant-cost-savings\/\"><span>Read more<\/span><\/a><\/div><\/div><div class=\"recent-post-details\"><div class=\"recent-post-thumbnail\"><a href=\"https:\/\/cnsdrive.com\/cnnewsite\/future-proof-investments-transforming-value-with-innovative-futuristic-solutions\/\"><img loading=\"lazy\" decoding=\"async\" width=\"2211\" height=\"1246\" src=\"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/10\/AdobeStock_728739939.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" srcset=\"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/10\/AdobeStock_728739939.jpg 2211w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/10\/AdobeStock_728739939-300x169.jpg 300w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/10\/AdobeStock_728739939-1024x577.jpg 1024w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/10\/AdobeStock_728739939-768x433.jpg 768w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/10\/AdobeStock_728739939-1536x866.jpg 1536w, https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/10\/AdobeStock_728739939-2048x1154.jpg 2048w\" sizes=\"(max-width: 2211px) 100vw, 2211px\" \/><\/a><\/div><div class=\"recent-post-title\"><h5><a href=\"https:\/\/cnsdrive.com\/cnnewsite\/future-proof-investments-transforming-value-with-innovative-futuristic-solutions\/\">Future-Proof Investments: Transforming Value with Innovative Futuristic Solutions<\/a><\/h5><a class=\"case-study-btn\" href=\"https:\/\/cnsdrive.com\/cnnewsite\/future-proof-investments-transforming-value-with-innovative-futuristic-solutions\/\"><span>Read more<\/span><\/a><\/div><\/div><\/div><\/div><\/div><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2136ff7 inner-page-back-parent e-flex e-con-boxed e-con e-parent\" data-id=\"2136ff7\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-41220a6 elementor-widget elementor-widget-shortcode\" data-id=\"41220a6\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-shortcode\"><a href=\"https:\/\/cnsdrive.com\/cnnewsite\/blog\" class=\"back-button\">Go Back<\/a><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>An employee intranet (portal) is an in-house network that is exercised for communication, collaboration, and vital information management within the organization. In the long run, the quantity of information to be conveyed across the organization will multiply in many folds and become strenuous to ensure effective employee communication. In this digital transformation era, an intranet employee portal is pivotal in maintaining a healthy employee experience within the organization.\u00a0<\/p>\n","protected":false},"author":1,"featured_media":3802,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[24],"tags":[],"class_list":["post-3798","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-optimization"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Database Routing in Spring Boot - CN<\/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:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Database Routing in Spring Boot - CN\" \/>\n<meta property=\"og:description\" content=\"An employee intranet (portal) is an in-house network that is exercised for communication, collaboration, and vital information management within the organization. In the long run, the quantity of information to be conveyed across the organization will multiply in many folds and become strenuous to ensure effective employee communication. In this digital transformation era, an intranet employee portal is pivotal in maintaining a healthy employee experience within the organization.\u00a0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/\" \/>\n<meta property=\"og:site_name\" content=\"CN\" \/>\n<meta property=\"article:published_time\" content=\"2024-04-29T09:23:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-27T10:52:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/06\/AdobeStock_222591309-min-scaled-1.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1709\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin_cn\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin_cn\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/\",\"url\":\"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/\",\"name\":\"Database Routing in Spring Boot - CN\",\"isPartOf\":{\"@id\":\"https:\/\/cnsdrive.com\/cnnewsite\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/06\/AdobeStock_222591309-min-scaled-1.jpeg\",\"datePublished\":\"2024-04-29T09:23:00+00:00\",\"dateModified\":\"2024-12-27T10:52:34+00:00\",\"author\":{\"@id\":\"https:\/\/cnsdrive.com\/cnnewsite\/#\/schema\/person\/e57ffa69cb48df5e7acc3cdfd33dd711\"},\"breadcrumb\":{\"@id\":\"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/#primaryimage\",\"url\":\"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/06\/AdobeStock_222591309-min-scaled-1.jpeg\",\"contentUrl\":\"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/06\/AdobeStock_222591309-min-scaled-1.jpeg\",\"width\":2560,\"height\":1709},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cnsdrive.com\/cnnewsite\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Database Routing in Spring Boot\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cnsdrive.com\/cnnewsite\/#website\",\"url\":\"https:\/\/cnsdrive.com\/cnnewsite\/\",\"name\":\"CN\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cnsdrive.com\/cnnewsite\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/cnsdrive.com\/cnnewsite\/#\/schema\/person\/e57ffa69cb48df5e7acc3cdfd33dd711\",\"name\":\"admin_cn\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cnsdrive.com\/cnnewsite\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d736299c43fcef6055e4009d1163cb37caab44122961c5e75a9111b80d4c2387?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d736299c43fcef6055e4009d1163cb37caab44122961c5e75a9111b80d4c2387?s=96&d=mm&r=g\",\"caption\":\"admin_cn\"},\"sameAs\":[\"https:\/\/cnsdrive.com\/cnnewsite\"],\"url\":\"https:\/\/cnsdrive.com\/cnnewsite\/author\/admin_cn\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Database Routing in Spring Boot - CN","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:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/","og_locale":"en_US","og_type":"article","og_title":"Database Routing in Spring Boot - CN","og_description":"An employee intranet (portal) is an in-house network that is exercised for communication, collaboration, and vital information management within the organization. In the long run, the quantity of information to be conveyed across the organization will multiply in many folds and become strenuous to ensure effective employee communication. In this digital transformation era, an intranet employee portal is pivotal in maintaining a healthy employee experience within the organization.\u00a0","og_url":"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/","og_site_name":"CN","article_published_time":"2024-04-29T09:23:00+00:00","article_modified_time":"2024-12-27T10:52:34+00:00","og_image":[{"width":2560,"height":1709,"url":"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/06\/AdobeStock_222591309-min-scaled-1.jpeg","type":"image\/jpeg"}],"author":"admin_cn","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin_cn","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/","url":"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/","name":"Database Routing in Spring Boot - CN","isPartOf":{"@id":"https:\/\/cnsdrive.com\/cnnewsite\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/#primaryimage"},"image":{"@id":"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/#primaryimage"},"thumbnailUrl":"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/06\/AdobeStock_222591309-min-scaled-1.jpeg","datePublished":"2024-04-29T09:23:00+00:00","dateModified":"2024-12-27T10:52:34+00:00","author":{"@id":"https:\/\/cnsdrive.com\/cnnewsite\/#\/schema\/person\/e57ffa69cb48df5e7acc3cdfd33dd711"},"breadcrumb":{"@id":"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/#primaryimage","url":"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/06\/AdobeStock_222591309-min-scaled-1.jpeg","contentUrl":"https:\/\/cnsdrive.com\/cnnewsite\/wp-content\/uploads\/2024\/06\/AdobeStock_222591309-min-scaled-1.jpeg","width":2560,"height":1709},{"@type":"BreadcrumbList","@id":"https:\/\/cnsdrive.com\/cnnewsite\/database-routing-in-spring-boot\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cnsdrive.com\/cnnewsite\/"},{"@type":"ListItem","position":2,"name":"Database Routing in Spring Boot"}]},{"@type":"WebSite","@id":"https:\/\/cnsdrive.com\/cnnewsite\/#website","url":"https:\/\/cnsdrive.com\/cnnewsite\/","name":"CN","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cnsdrive.com\/cnnewsite\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/cnsdrive.com\/cnnewsite\/#\/schema\/person\/e57ffa69cb48df5e7acc3cdfd33dd711","name":"admin_cn","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cnsdrive.com\/cnnewsite\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d736299c43fcef6055e4009d1163cb37caab44122961c5e75a9111b80d4c2387?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d736299c43fcef6055e4009d1163cb37caab44122961c5e75a9111b80d4c2387?s=96&d=mm&r=g","caption":"admin_cn"},"sameAs":["https:\/\/cnsdrive.com\/cnnewsite"],"url":"https:\/\/cnsdrive.com\/cnnewsite\/author\/admin_cn\/"}]}},"_links":{"self":[{"href":"https:\/\/cnsdrive.com\/cnnewsite\/wp-json\/wp\/v2\/posts\/3798","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cnsdrive.com\/cnnewsite\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cnsdrive.com\/cnnewsite\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cnsdrive.com\/cnnewsite\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cnsdrive.com\/cnnewsite\/wp-json\/wp\/v2\/comments?post=3798"}],"version-history":[{"count":172,"href":"https:\/\/cnsdrive.com\/cnnewsite\/wp-json\/wp\/v2\/posts\/3798\/revisions"}],"predecessor-version":[{"id":11065,"href":"https:\/\/cnsdrive.com\/cnnewsite\/wp-json\/wp\/v2\/posts\/3798\/revisions\/11065"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cnsdrive.com\/cnnewsite\/wp-json\/wp\/v2\/media\/3802"}],"wp:attachment":[{"href":"https:\/\/cnsdrive.com\/cnnewsite\/wp-json\/wp\/v2\/media?parent=3798"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cnsdrive.com\/cnnewsite\/wp-json\/wp\/v2\/categories?post=3798"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cnsdrive.com\/cnnewsite\/wp-json\/wp\/v2\/tags?post=3798"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}