{"id":20961,"date":"2014-01-25T20:41:38","date_gmt":"2014-01-25T18:41:38","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/?p=20961"},"modified":"2014-01-25T20:41:38","modified_gmt":"2014-01-25T18:41:38","slug":"understanding-spring-web-initialization","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2014\/01\/understanding-spring-web-initialization.html","title":{"rendered":"Understanding Spring Web Initialization"},"content":{"rendered":"<p>Few years ago majority of us were used to write XML config files everywhere, to setup even simple Java EE application. Today using Java or Groovy to configure projects is becoming preferred way &#8211; you just need to take a look at Gradle or functionalities introduced in further versions of the Spring Framework to gen up on this.<\/p>\n<p>Now I&#8217;ll deal with configuring Spring contexts for web application.<\/p>\n<p>Java EE provides <a href=\"http:\/\/docs.oracle.com\/javaee\/6\/api\/javax\/servlet\/ServletContainerInitializer.html\" target=\"_blank\">ServletContainerInitializer<\/a> interface, which allows libraries to be notified of a web application startup. Since <b>Spring 3.1<\/b> we have <a href=\"http:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/web\/SpringServletContainerInitializer.html\" target=\"_blank\">SpringServletContainerInitializer<\/a> class which handles <a href=\"http:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/web\/WebApplicationInitializer.html\" target=\"_blank\">WebApplicationInitializer<\/a> by instantiating all found classes implementing this interface, sorting them basing on <a href=\"http:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/core\/annotation\/Order.html\" target=\"_blank\">@Order<\/a> annotation (non-annotated classes gets the highest possible order, so they are processed at the end) and invoking <i>onStartup()<\/i> method.<\/p>\n<p>Spring since version <b>3.2<\/b> provides us a few classes implementing <a href=\"http:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/web\/WebApplicationInitializer.html\" target=\"_blank\">WebApplicationInitializer<\/a>\u00a0interface, from which first is <a href=\"http:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/web\/context\/AbstractContextLoaderInitializer.html\" target=\"_blank\">AbstractContextLoaderInitializer<\/a>. This class included in spring-web module uses abstract <i>createRootApplicationContext()<\/i> method to create application context, delegates it to <a href=\"http:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/web\/context\/ContextLoaderListener.html\" target=\"_blank\">ContextLoaderListener<\/a> which then is being registered in the <a href=\"http:\/\/docs.oracle.com\/javaee\/6\/api\/javax\/servlet\/ServletContext.html\" target=\"_blank\">ServletContext<\/a> instance. Creating application context using this class looks as follows:<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<pre class=\" brush:java\">public class SpringAnnotationWebInitializer\r\n  extends AbstractContextLoaderInitializer {\r\n\r\n  @Override\r\n  protected WebApplicationContext createRootApplicationContext() {\r\n    AnnotationConfigWebApplicationContext applicationContext =\r\n      new AnnotationConfigWebApplicationContext();\r\n    applicationContext.register(SpringAnnotationConfig.class);\r\n    return applicationContext;\r\n  }\r\n\r\n}<\/pre>\n<p>That was the simplest way to start up Spring web context. But if we want to experience benefits provided by Spring MVC and don&#8217;t want to manually register <a href=\"http:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/web\/servlet\/DispatcherServlet.html\" target=\"_blank\">DispatcherServlet<\/a> it&#8217;ll be better to use another class: <a href=\"http:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/web\/servlet\/support\/AbstractDispatcherServletInitializer.html\" target=\"_blank\">AbstractDispatcherServletInitializer<\/a>. It extends previous class and adds two abstract methods: <i>createServletApplicationContext()<\/i> and <i>getServletMappings()<\/i>. \u00a0First method returns <a href=\"http:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/web\/context\/WebApplicationContext.html\" target=\"_blank\">WebApplicationContext<\/a> that will be passed to <a href=\"http:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/web\/servlet\/DispatcherServlet.html\" target=\"_blank\">DispatcherServlet<\/a>, which will be automatically added into\u00a0container <a href=\"http:\/\/docs.oracle.com\/javaee\/6\/api\/javax\/servlet\/ServletContext.html\" target=\"_blank\">ServletContext<\/a>. Please notice that this context will be established as a child of the context returned by <i>createRootApplicationContext()<\/i> method. Second method &#8211; as you have probably already deduced &#8211; returns mappings that are used during servlet registration. You can also override <i>getServletFilters()<\/i> method if you need any custom filters, because default implementation returns just empty array. Exemplary implementation using this class could be:<\/p>\n<pre class=\" brush:java\">public class SpringWebMvcInitializer\r\n  extends AbstractDispatcherServletInitializer {\r\n\r\n  @Override\r\n  protected WebApplicationContext createRootApplicationContext() {\r\n    AnnotationConfigWebApplicationContext applicationContext =\r\n      new AnnotationConfigWebApplicationContext();\r\n    applicationContext.register(SpringRootConfig.class);\r\n    return applicationContext;\r\n  }\r\n\r\n  @Override\r\n  protected WebApplicationContext createServletApplicationContext() {\r\n    AnnotationConfigWebApplicationContext applicationContext =\r\n      new AnnotationConfigWebApplicationContext();\r\n    applicationContext.register(SpringMvcConfig.class);\r\n    return applicationContext;\r\n  }\r\n\r\n  @Override\r\n  protected String[] getServletMappings() {\r\n    return new String[]{\"\/*\"};\r\n  }\r\n\r\n}<\/pre>\n<p>And now last but definitely not least class: <a href=\"http:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/web\/servlet\/support\/AbstractAnnotationConfigDispatcherServletInitializer.html\" target=\"_blank\">AbstractAnnotationConfigDispatcherServletInitializer<\/a>. Here we can see further step in simplifying Spring initialization &#8211; we don&#8217;t need to manually create contexts but just set appropriate config classes in <i>getRootConfigClasses()<\/i> and <i>getServletConfigClasses()<\/i> methods. I hope you are already familiar with those names, because they works exactly like in the former case. Of course due to this class extends <a href=\"http:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/web\/servlet\/support\/AbstractDispatcherServletInitializer.html\" target=\"_blank\">AbstractDispatcherServletInitializer<\/a>\u00a0we can still override <i>getServletFilters()<\/i>. Finally we can implement our configuration in the\u00a0following way:<\/p>\n<pre class=\" brush:java\">public class SpringWebMvcSimpleInitializer\r\n  extends AbstractAnnotationConfigDispatcherServletInitializer {\r\n\r\n  @Override\r\n  protected Class&lt;?&gt;[] getRootConfigClasses() {\r\n    return new Class[] {SpringRootConfig.class};\r\n  }\r\n\r\n  @Override\r\n  protected Class&lt;?&gt;[] getServletConfigClasses() {\r\n    return new Class[] {SpringMvcConfig.class};\r\n  }\r\n\r\n  @Override\r\n  protected String[] getServletMappings() {\r\n    return new String[]{\"\/*\"};\r\n  }\r\n\r\n}<\/pre>\n<ul>\n<li>If you like to see wider context please follow examples in my GitHub repo: <a href=\"https:\/\/github.com\/jkubrynski\/spring-java-config-samples\/\">https:\/\/github.com\/jkubrynski\/spring-java-config-samples\/<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<div style=\"border: 1px solid #D8D8D8; background: #FAFAFA; width: 100%; padding-left: 5px;\"><b><i>Reference: <\/i><\/b><a href=\"http:\/\/www.kubrynski.com\/2014\/01\/understanding-spring-web-initialization.html\">Understanding Spring Web Initialization<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/jcg\">JCG partner<\/a> Jakub Kubrynski at the <a href=\"http:\/\/www.kubrynski.com\/\">Java(B)Log<\/a> blog.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Few years ago majority of us were used to write XML config files everywhere, to setup even simple Java EE application. Today using Java or Groovy to configure projects is becoming preferred way &#8211; you just need to take a look at Gradle or functionalities introduced in further versions of the Spring Framework to gen &hellip;<\/p>\n","protected":false},"author":489,"featured_media":240,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[30,150],"class_list":["post-20961","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>Understanding Spring Web Initialization<\/title>\n<meta name=\"description\" content=\"Few years ago majority of us were used to write XML config files everywhere, to setup even simple Java EE application. Today using Java or Groovy to\" \/>\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\/2014\/01\/understanding-spring-web-initialization.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Understanding Spring Web Initialization\" \/>\n<meta property=\"og:description\" content=\"Few years ago majority of us were used to write XML config files everywhere, to setup even simple Java EE application. Today using Java or Groovy to\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2014\/01\/understanding-spring-web-initialization.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=\"2014-01-25T18:41:38+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=\"Jakub Kubrynski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/jkubrynski\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jakub Kubrynski\" \/>\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\\\/2014\\\/01\\\/understanding-spring-web-initialization.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/01\\\/understanding-spring-web-initialization.html\"},\"author\":{\"name\":\"Jakub Kubrynski\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/b1260c8ca896862412b021458fd60186\"},\"headline\":\"Understanding Spring Web Initialization\",\"datePublished\":\"2014-01-25T18:41:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/01\\\/understanding-spring-web-initialization.html\"},\"wordCount\":430,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/01\\\/understanding-spring-web-initialization.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\\\/2014\\\/01\\\/understanding-spring-web-initialization.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/01\\\/understanding-spring-web-initialization.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/01\\\/understanding-spring-web-initialization.html\",\"name\":\"Understanding Spring Web Initialization\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/01\\\/understanding-spring-web-initialization.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/01\\\/understanding-spring-web-initialization.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/spring-logo.jpg\",\"datePublished\":\"2014-01-25T18:41:38+00:00\",\"description\":\"Few years ago majority of us were used to write XML config files everywhere, to setup even simple Java EE application. Today using Java or Groovy to\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/01\\\/understanding-spring-web-initialization.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/01\\\/understanding-spring-web-initialization.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2014\\\/01\\\/understanding-spring-web-initialization.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\\\/2014\\\/01\\\/understanding-spring-web-initialization.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\":\"Understanding Spring Web Initialization\"}]},{\"@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\\\/b1260c8ca896862412b021458fd60186\",\"name\":\"Jakub Kubrynski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/588d285a5dc1328cd70199e10df27722277e5cfcd13fc51c40413c788110ce47?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/588d285a5dc1328cd70199e10df27722277e5cfcd13fc51c40413c788110ce47?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/588d285a5dc1328cd70199e10df27722277e5cfcd13fc51c40413c788110ce47?s=96&d=mm&r=g\",\"caption\":\"Jakub Kubrynski\"},\"description\":\"I'm software developer by vocation. Java team leader at work and open source enthusiast at home. Strongly interested in new technologies. Fan of java.util.concurrent and sun.misc.Unsafe. My motto is \\\"minimum code, maximum functionality.\",\"sameAs\":[\"http:\\\/\\\/www.kubrynski.com\\\/\",\"http:\\\/\\\/www.linkedin.com\\\/in\\\/jkubrynski\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/jkubrynski\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/jakub-kubrynski\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Understanding Spring Web Initialization","description":"Few years ago majority of us were used to write XML config files everywhere, to setup even simple Java EE application. Today using Java or Groovy to","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\/2014\/01\/understanding-spring-web-initialization.html","og_locale":"en_US","og_type":"article","og_title":"Understanding Spring Web Initialization","og_description":"Few years ago majority of us were used to write XML config files everywhere, to setup even simple Java EE application. Today using Java or Groovy to","og_url":"https:\/\/www.javacodegeeks.com\/2014\/01\/understanding-spring-web-initialization.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2014-01-25T18:41:38+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":"Jakub Kubrynski","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/jkubrynski","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Jakub Kubrynski","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2014\/01\/understanding-spring-web-initialization.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/01\/understanding-spring-web-initialization.html"},"author":{"name":"Jakub Kubrynski","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/b1260c8ca896862412b021458fd60186"},"headline":"Understanding Spring Web Initialization","datePublished":"2014-01-25T18:41:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/01\/understanding-spring-web-initialization.html"},"wordCount":430,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/01\/understanding-spring-web-initialization.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\/2014\/01\/understanding-spring-web-initialization.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2014\/01\/understanding-spring-web-initialization.html","url":"https:\/\/www.javacodegeeks.com\/2014\/01\/understanding-spring-web-initialization.html","name":"Understanding Spring Web Initialization","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/01\/understanding-spring-web-initialization.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/01\/understanding-spring-web-initialization.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","datePublished":"2014-01-25T18:41:38+00:00","description":"Few years ago majority of us were used to write XML config files everywhere, to setup even simple Java EE application. Today using Java or Groovy to","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2014\/01\/understanding-spring-web-initialization.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2014\/01\/understanding-spring-web-initialization.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2014\/01\/understanding-spring-web-initialization.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\/2014\/01\/understanding-spring-web-initialization.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":"Understanding Spring Web Initialization"}]},{"@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\/b1260c8ca896862412b021458fd60186","name":"Jakub Kubrynski","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/588d285a5dc1328cd70199e10df27722277e5cfcd13fc51c40413c788110ce47?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/588d285a5dc1328cd70199e10df27722277e5cfcd13fc51c40413c788110ce47?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/588d285a5dc1328cd70199e10df27722277e5cfcd13fc51c40413c788110ce47?s=96&d=mm&r=g","caption":"Jakub Kubrynski"},"description":"I'm software developer by vocation. Java team leader at work and open source enthusiast at home. Strongly interested in new technologies. Fan of java.util.concurrent and sun.misc.Unsafe. My motto is \"minimum code, maximum functionality.","sameAs":["http:\/\/www.kubrynski.com\/","http:\/\/www.linkedin.com\/in\/jkubrynski","https:\/\/x.com\/https:\/\/twitter.com\/jkubrynski"],"url":"https:\/\/www.javacodegeeks.com\/author\/jakub-kubrynski"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/20961","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\/489"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=20961"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/20961\/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=20961"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=20961"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=20961"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}