{"id":65415,"date":"2017-04-24T16:00:11","date_gmt":"2017-04-24T13:00:11","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=65415"},"modified":"2017-04-22T12:12:03","modified_gmt":"2017-04-22T09:12:03","slug":"spring-boot-enablewebmvc-common-use-cases","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html","title":{"rendered":"Spring Boot, @EnableWebMvc And Common Use-Cases"},"content":{"rendered":"<p>It turns out that Spring Boot doesn\u2019t mix well with the standard Spring MVC <code>@EnableWebMvc<\/code>. What happens when you add the annotation is that spring boot autoconfiguration is disabled.<\/p>\n<p>The bad part (that wasted me a few hours) is that in no guide you can find that explicitly stated. In <a href=\"https:\/\/spring.io\/guides\/gs\/spring-boot\/\">this guide<\/a> it says that Spring Boot adds it automatically, but doesn\u2019t say what happens if you follow your previous experience and just put the annotation.<\/p>\n<p>In fact, people that are having issues stemming from this automatically disabled autoconfiguration, are trying to address it in various ways. Most often \u2013 by keeping @EnableWebMvc, but also extending Spring Boot\u2019s <code>WebMvcAutoConfiguration<\/code>. Like <a href=\"http:\/\/stackoverflow.com\/questions\/24661289\/spring-boot-not-serving-static-content\/25959419\">here<\/a>, <a href=\"https:\/\/github.com\/spring-projects\/spring-boot\/issues\/5004\">here<\/a> and <a href=\"http:\/\/blog.kaliatech.com\/2014\/11\/adding-external-directory-to-spring-boots-static-resources-handling\/\">somewhat here<\/a>. I found them after I got the idea and implemented it that way. Then realized doing it is redundant, after going through Spring Boot\u2019s code and seeing that an inner class in the autoconfiguration class has a single-line javadoc stating<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<blockquote>\n<p>Configuration equivalent to {@code @EnableWebMvc}.<\/p>\n<\/blockquote>\n<p>That answered my question whether spring boot autoconfiguration misses some of the EnableWebMvc \u201cfeatures\u201d. And it\u2019s good that they extended the class that provides EnableWebMvc, rather than mirroring the functionality (which is obvious, I guess).<\/p>\n<p>What should you do when you want to customize your beans? As usual, extend <code>WebMvcConfigurerAdapter<\/code> (annotate the new class with <code>@Component<\/code>) and do your customizations.<\/p>\n<p>So, bottom line of the particular problem: don\u2019t use @EnableWebMvc in spring boot, just include spring-web as a maven\/gradle dependency and it will be autoconfigured.<\/p>\n<p>The bigger picture here resulted in me adding a comment in the main configuration class detailing why <code>@EnableWebMvc<\/code> should not be put there. So the autoconfiguration magic saved me doing a lot of stuff, but I still added a line explaining why something isn\u2019t there.<\/p>\n<p>And that\u2019s because of the <a href=\"https:\/\/www.javacodegeeks.com\/2011\/11\/default-use-case.html\">common use-cases<\/a> \u2013 people are used to using <code>@EnableWebMvc<\/code>. So the most natural and common thing to do is to add it, especially if you don\u2019t know how spring boot autoconfiguration works in detail. And they will keep doing it, and wasting a few hours before realizing they should remove it (or before extending a bunch of boot\u2019s classes in order to achieve the same effect).<\/p>\n<p>My suggestion in situations like this is: log a warning. And require explicitly disabling autoconfiguration in order to get rid of the warning. I had to turn on debug to see what gets autoconfigured, and then explore a bunch of classes to check the necessary conditions in order to figure out the situation.<\/p>\n<p>And one of Spring Boot\u2019s main use-cases is jar-packaged web applications. That\u2019s what most tutorials are for, and that\u2019s what it\u2019s mostly used for, I guess. So there should be special treatment for this common use case \u2013 with additional logging and logged information helping people get through the maze of autoconfiguration.<\/p>\n<p>I don\u2019t want to be seen as \u201clecturing\u201d the Spring team, who have done amazing job in having good documentation and straightforward behaviour. But in this case, where multiple sub-projects \u201ccollide\u201d, it seems it could be improved.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"https:\/\/techblog.bozho.net\/spring-boot-enablewebmvc-common-use-cases\/\">Spring Boot, @EnableWebMvc And Common Use-Cases<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/join-us\/jcg\/\">JCG partner<\/a> Bozhidar Bozhanov at the <a href=\"http:\/\/techblog.bozho.net\/\">Bozho&#8217;s tech blog<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>It turns out that Spring Boot doesn\u2019t mix well with the standard Spring MVC @EnableWebMvc. What happens when you add the annotation is that spring boot autoconfiguration is disabled. The bad part (that wasted me a few hours) is that in no guide you can find that explicitly stated. In this guide it says that &hellip;<\/p>\n","protected":false},"author":55,"featured_media":240,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[30,854],"class_list":["post-65415","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-spring","tag-spring-boot"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Spring Boot, @EnableWebMvc And Common Use-Cases - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"It turns out that Spring Boot doesn\u2019t mix well with the standard Spring MVC @EnableWebMvc. What happens when you add the annotation is that spring boot\" \/>\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\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring Boot, @EnableWebMvc And Common Use-Cases - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"It turns out that Spring Boot doesn\u2019t mix well with the standard Spring MVC @EnableWebMvc. What happens when you add the annotation is that spring boot\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.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=\"2017-04-24T13:00:11+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=\"Bozhidar Bozhanov\" \/>\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=\"Bozhidar Bozhanov\" \/>\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\\\/2017\\\/04\\\/spring-boot-enablewebmvc-common-use-cases.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/04\\\/spring-boot-enablewebmvc-common-use-cases.html\"},\"author\":{\"name\":\"Bozhidar Bozhanov\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/1eaacbb8d159c99fd32e6b51198a1e79\"},\"headline\":\"Spring Boot, @EnableWebMvc And Common Use-Cases\",\"datePublished\":\"2017-04-24T13:00:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/04\\\/spring-boot-enablewebmvc-common-use-cases.html\"},\"wordCount\":536,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/04\\\/spring-boot-enablewebmvc-common-use-cases.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/spring-logo.jpg\",\"keywords\":[\"Spring\",\"Spring Boot\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/04\\\/spring-boot-enablewebmvc-common-use-cases.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/04\\\/spring-boot-enablewebmvc-common-use-cases.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/04\\\/spring-boot-enablewebmvc-common-use-cases.html\",\"name\":\"Spring Boot, @EnableWebMvc And Common Use-Cases - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/04\\\/spring-boot-enablewebmvc-common-use-cases.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/04\\\/spring-boot-enablewebmvc-common-use-cases.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/spring-logo.jpg\",\"datePublished\":\"2017-04-24T13:00:11+00:00\",\"description\":\"It turns out that Spring Boot doesn\u2019t mix well with the standard Spring MVC @EnableWebMvc. What happens when you add the annotation is that spring boot\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/04\\\/spring-boot-enablewebmvc-common-use-cases.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/04\\\/spring-boot-enablewebmvc-common-use-cases.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2017\\\/04\\\/spring-boot-enablewebmvc-common-use-cases.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\\\/2017\\\/04\\\/spring-boot-enablewebmvc-common-use-cases.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 Boot, @EnableWebMvc And Common Use-Cases\"}]},{\"@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\\\/1eaacbb8d159c99fd32e6b51198a1e79\",\"name\":\"Bozhidar Bozhanov\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/bozhidar.bozhanov.jpg\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/bozhidar.bozhanov.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/bozhidar.bozhanov.jpg\",\"caption\":\"Bozhidar Bozhanov\"},\"description\":\"Senior Java developer, one of the top stackoverflow users, fluent with Java and Java technology stacks - Spring, JPA, JavaEE, as well as Android, Scala and any framework you throw at him. creator of Computoser - an algorithmic music composer. Worked on telecom projects, e-government and large-scale online recruitment and navigation platforms.\",\"sameAs\":[\"http:\\\/\\\/techblog.bozho.net\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/bozhidar-bozhanov\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Spring Boot, @EnableWebMvc And Common Use-Cases - Java Code Geeks","description":"It turns out that Spring Boot doesn\u2019t mix well with the standard Spring MVC @EnableWebMvc. What happens when you add the annotation is that spring boot","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\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html","og_locale":"en_US","og_type":"article","og_title":"Spring Boot, @EnableWebMvc And Common Use-Cases - Java Code Geeks","og_description":"It turns out that Spring Boot doesn\u2019t mix well with the standard Spring MVC @EnableWebMvc. What happens when you add the annotation is that spring boot","og_url":"https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2017-04-24T13:00:11+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":"Bozhidar Bozhanov","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Bozhidar Bozhanov","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html"},"author":{"name":"Bozhidar Bozhanov","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/1eaacbb8d159c99fd32e6b51198a1e79"},"headline":"Spring Boot, @EnableWebMvc And Common Use-Cases","datePublished":"2017-04-24T13:00:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html"},"wordCount":536,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","keywords":["Spring","Spring Boot"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html","url":"https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html","name":"Spring Boot, @EnableWebMvc And Common Use-Cases - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","datePublished":"2017-04-24T13:00:11+00:00","description":"It turns out that Spring Boot doesn\u2019t mix well with the standard Spring MVC @EnableWebMvc. What happens when you add the annotation is that spring boot","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.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\/2017\/04\/spring-boot-enablewebmvc-common-use-cases.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 Boot, @EnableWebMvc And Common Use-Cases"}]},{"@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\/1eaacbb8d159c99fd32e6b51198a1e79","name":"Bozhidar Bozhanov","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/12\/bozhidar.bozhanov.jpg","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/12\/bozhidar.bozhanov.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/12\/bozhidar.bozhanov.jpg","caption":"Bozhidar Bozhanov"},"description":"Senior Java developer, one of the top stackoverflow users, fluent with Java and Java technology stacks - Spring, JPA, JavaEE, as well as Android, Scala and any framework you throw at him. creator of Computoser - an algorithmic music composer. Worked on telecom projects, e-government and large-scale online recruitment and navigation platforms.","sameAs":["http:\/\/techblog.bozho.net\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/bozhidar-bozhanov"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/65415","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\/55"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=65415"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/65415\/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=65415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=65415"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=65415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}