{"id":714,"date":"2011-11-02T23:29:00","date_gmt":"2011-11-02T23:29:00","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/2012\/10\/spring-singleton-request-session-beans-and-thread-safety.html"},"modified":"2012-10-21T20:44:17","modified_gmt":"2012-10-21T20:44:17","slug":"spring-singleton-request-session-beans","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.html","title":{"rendered":"Spring Singleton, Request, Session Beans and Thread Safety"},"content":{"rendered":"<div dir=\"ltr\" style=\"text-align: left\">The Spring framework ecosystem comprising of so many useful frameworks has become the backbone of many Java EE application. But at the core of all the spring products we still have the Spring DI\/IOC framework which has catapulted Spring to all new heights.<\/p>\n<p>As more people are adopting Spring MVC or a JSF-Spring integration for their application, the Spring beans are now more frequently used with request\/session scope apart from their more traditional counterparts of Singleton and  Prototype scopes.<\/p>\n<p>One of the initial curiosities of a developer just starting out with various Spring scopes is that how do these scope behave in a web application and in situations which require writing safe concurrency code. Well the answer to this no to over-think about these scope as they behave exactly the way they have been named.  Let\u2019s take a example of JSF- Spring integration wherein all the JSF beans are loaded by the Spring IOC container and Scope of the beans are also defined using suppose Spring\u2019s <strong>@Scope<\/strong> annotation.<\/p>\n<p>The bean with <strong>@Scope(\u201crequest\u201d)<\/strong> would be created for anywhere new incoming request thus it\u2019s thread safely is guaranteed since it\u2019s created everytime a new request comes in. Next is the <strong>@Scope(\u201csession\u201d)<\/strong> bean which would be same for every session of the user, in case of user accessing the application through multiple tabs of the browser this bean scope can surely give concurrency issues thus it\u2019s important for the developer to make sure that the state of the shared session data doesn\u2019t become corrupt.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p>Now comes the <strong>@Scope(\u201csingleton\u201d)<\/strong>  or the default scope of the Spring beans, how do these singleton beans behave in a heavy load web application.  Well first of all it\u2019s important to understand that <strong>\u201cSingleton\u201d <\/strong>means only one instance i.e. the application will have only one instance of that bean. Now Spring framework <strong>doesn\u2019t do anything<\/strong> under the hood concerning the multithreaded  behavior this Singleton bean i.e. it\u2019s just a normal Singleton bean and it\u2019s upto the developer to handle the Concurrency issues pertaining to this bean.<\/p>\n<p>Now the question arises what kind of beans should be <strong>Singleton<\/strong> in a web application, well the answer is pretty straightforward: <strong>Any Bean without STATE can be a singleton<\/strong>.  For example beans that easily qualify to be singleton are <strong>DAO<\/strong>,  <strong>Service<\/strong>,  <strong>Controller<\/strong> these beans don\u2019t have their own states instead we leverage these beans in our application to perform certain operations..  The DAO layer beans can be singleton as they don\u2019t have their own state but every thread accessing them using the DAO bean to perform certain thread specific operation thus the DAO bean remains unaffected by it\u2019s own concurrent access because it doesn\u2019t have it\u2019s own state.<\/p>\n<p>A <strong>really bad example of choosing a Singleton<\/strong> bean would be a bean that needs to maintain it\u2019s state in that case each thread would try to impose it\u2019s own state on that bean there by corrupting the data.  For example if a Person bean with setters and getter for name and age is made singleton. Now if multiple threads start accessing this bean they would keep overriding the last set values of the Person\u2019s instance thereby corrupting the state.<\/p>\n<p>Conclusion \u2013 Remember the golden rule: <strong>Choose only those beans as singleton that don\u2019t have state<\/strong><\/p>\n<p><strong><i>Reference: <\/i><\/strong><a href=\"http:\/\/tarunsapra.wordpress.com\/2011\/08\/21\/spring-singleton-request-session-beans-and-thread-safety\/\">Spring Singleton, Request, Session Beans and Thread Safety<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/p\/jcg.html\">JCG partner<\/a> Tarun Sapra at the <a href=\"http:\/\/tarunsapra.wordpress.com\/\">&#8220;Java Enterprise Ecosystem&#8221; blog<\/a>. <\/p>\n<p><strong><i>Related Articles :<\/i><\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/09\/evolution-of-spring-dependency.html\">The evolution of Spring dependency injection techniques<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/02\/spring-mvc-development-tutorial.html\">Spring MVC Development &#8211; Quick Tutorial<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/11\/everybody-knows-about-mvc.html\">Everybody Knows About MVC&#8230;<\/a> <\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/04\/spring-mvc3-hibernate-crud-sample.html\">Spring MVC3 Hibernate CRUD Sample Application<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2010\/12\/securing-gwt-apps-with-spring-security.html\">Securing GWT apps with Spring Security<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/p\/java-tutorials.html\">Java Tutorials and Android Tutorials list<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>The Spring framework ecosystem comprising of so many useful frameworks has become the backbone of many Java EE application. But at the core of all the spring products we still have the Spring DI\/IOC framework which has catapulted Spring to all new heights. As more people are adopting Spring MVC or a JSF-Spring integration for &hellip;<\/p>\n","protected":false},"author":88,"featured_media":240,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[30,150],"class_list":["post-714","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-spring","tag-spring-mvc"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Spring Singleton, Request, Session Beans and Thread Safety - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"The Spring framework ecosystem comprising of so many useful frameworks has become the backbone of many Java EE application. But at the core of all the\" \/>\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\/2011\/11\/spring-singleton-request-session-beans.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring Singleton, Request, Session Beans and Thread Safety - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"The Spring framework ecosystem comprising of so many useful frameworks has become the backbone of many Java EE application. But at the core of all the\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.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=\"2011-11-02T23:29:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-10-21T20:44:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-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=\"Tarun Sapra\" \/>\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=\"Tarun Sapra\" \/>\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\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/11\\\/spring-singleton-request-session-beans.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/11\\\/spring-singleton-request-session-beans.html\"},\"author\":{\"name\":\"Tarun Sapra\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/e7780ed862c716dab8f99ff97bf1f142\"},\"headline\":\"Spring Singleton, Request, Session Beans and Thread Safety\",\"datePublished\":\"2011-11-02T23:29:00+00:00\",\"dateModified\":\"2012-10-21T20:44:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/11\\\/spring-singleton-request-session-beans.html\"},\"wordCount\":632,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/11\\\/spring-singleton-request-session-beans.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/spring-logo.jpg\",\"keywords\":[\"Spring\",\"Spring MVC\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/11\\\/spring-singleton-request-session-beans.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/11\\\/spring-singleton-request-session-beans.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/11\\\/spring-singleton-request-session-beans.html\",\"name\":\"Spring Singleton, Request, Session Beans and Thread Safety - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/11\\\/spring-singleton-request-session-beans.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/11\\\/spring-singleton-request-session-beans.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/spring-logo.jpg\",\"datePublished\":\"2011-11-02T23:29:00+00:00\",\"dateModified\":\"2012-10-21T20:44:17+00:00\",\"description\":\"The Spring framework ecosystem comprising of so many useful frameworks has become the backbone of many Java EE application. But at the core of all the\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/11\\\/spring-singleton-request-session-beans.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/11\\\/spring-singleton-request-session-beans.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/11\\\/spring-singleton-request-session-beans.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/spring-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/spring-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"spring-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/11\\\/spring-singleton-request-session-beans.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\":\"Spring Singleton, Request, Session Beans and Thread Safety\"}]},{\"@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\\\/e7780ed862c716dab8f99ff97bf1f142\",\"name\":\"Tarun Sapra\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c63f22bcef8b5201a9f26b868582fadcb1ef395438a6c3b1986a64cb79761c4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c63f22bcef8b5201a9f26b868582fadcb1ef395438a6c3b1986a64cb79761c4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c63f22bcef8b5201a9f26b868582fadcb1ef395438a6c3b1986a64cb79761c4?s=96&d=mm&r=g\",\"caption\":\"Tarun Sapra\"},\"sameAs\":[\"http:\\\/\\\/tarunsapra.wordpress.com\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Tarun-Sapra\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Spring Singleton, Request, Session Beans and Thread Safety - Java Code Geeks","description":"The Spring framework ecosystem comprising of so many useful frameworks has become the backbone of many Java EE application. But at the core of all the","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\/2011\/11\/spring-singleton-request-session-beans.html","og_locale":"en_US","og_type":"article","og_title":"Spring Singleton, Request, Session Beans and Thread Safety - Java Code Geeks","og_description":"The Spring framework ecosystem comprising of so many useful frameworks has become the backbone of many Java EE application. But at the core of all the","og_url":"https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2011-11-02T23:29:00+00:00","article_modified_time":"2012-10-21T20:44:17+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","type":"image\/jpeg"}],"author":"Tarun Sapra","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Tarun Sapra","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.html"},"author":{"name":"Tarun Sapra","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/e7780ed862c716dab8f99ff97bf1f142"},"headline":"Spring Singleton, Request, Session Beans and Thread Safety","datePublished":"2011-11-02T23:29:00+00:00","dateModified":"2012-10-21T20:44:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.html"},"wordCount":632,"commentCount":1,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","keywords":["Spring","Spring MVC"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.html","url":"https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.html","name":"Spring Singleton, Request, Session Beans and Thread Safety - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","datePublished":"2011-11-02T23:29:00+00:00","dateModified":"2012-10-21T20:44:17+00:00","description":"The Spring framework ecosystem comprising of so many useful frameworks has become the backbone of many Java EE application. But at the core of all the","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","width":150,"height":150,"caption":"spring-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2011\/11\/spring-singleton-request-session-beans.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":"Spring Singleton, Request, Session Beans and Thread Safety"}]},{"@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\/e7780ed862c716dab8f99ff97bf1f142","name":"Tarun Sapra","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5c63f22bcef8b5201a9f26b868582fadcb1ef395438a6c3b1986a64cb79761c4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5c63f22bcef8b5201a9f26b868582fadcb1ef395438a6c3b1986a64cb79761c4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c63f22bcef8b5201a9f26b868582fadcb1ef395438a6c3b1986a64cb79761c4?s=96&d=mm&r=g","caption":"Tarun Sapra"},"sameAs":["http:\/\/tarunsapra.wordpress.com\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/Tarun-Sapra"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/714","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\/88"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=714"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/714\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/240"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=714"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=714"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}