{"id":88248,"date":"2019-02-12T19:00:47","date_gmt":"2019-02-12T17:00:47","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=88248"},"modified":"2019-02-18T14:18:08","modified_gmt":"2019-02-18T12:18:08","slug":"spring-framework-architecture","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.html","title":{"rendered":"Spring Framework Architecture"},"content":{"rendered":"<p>This is an overview of <strong>Spring Framework Architecture<\/strong>. Learn how the various components of Spring Framework are organised and relates to each other. If you want to know what is Spring framework and its features please read <a href=\"http:\/\/www.amitph.com\/introduction-to-spring-framework\/\">Introduction to Spring Framework<\/a>.<\/p>\n<h3 class=\"wp-block-heading\">Overview<\/h3>\n<p><strong>Spring is a modular framework<\/strong>. It doesn\u2019t come as a package or bundle of multiple modules. Various spring components come as independent modules. This gives us a flexibility of <em>use what we need<\/em> and leave the rest. For example if we want to use Spring JMS module we don\u2019t need to add the Spring Web Module to our project. This makes our application light weight and focused.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"778\" height=\"512\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/spring-architecture.jpg\" alt=\"Spring Framework\" class=\"wp-image-88254\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/spring-architecture.jpg 778w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/spring-architecture-300x197.jpg 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/spring-architecture-768x505.jpg 768w\" sizes=\"(max-width: 778px) 100vw, 778px\" \/><figcaption>Spring Architecture <\/figcaption><\/figure>\n<\/div>\n<p>Let\u2019s have a high level look at Spring Architecture (refer diagram) and in subsequent sections of this tutorial we will look deep in each of these modules. As shown in the diagram, the Core is a base of Spring Framework. Other modules like Web, Data Access and a miscellaneous set of modules. The test module (also based on core) stands separate as it is related to Testing the spring backed components of an application.<\/p>\n<h3 class=\"wp-block-heading\">Core Container<\/h3>\n<p>The <strong>Core&nbsp;Container<\/strong> is heart of Spring. It contains some base framework classes and tools. The entire Spring Framework is based on top of the <strong>Core&nbsp;Container.<\/strong><\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"514\" height=\"356\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/core-container-module.jpg\" alt=\"Spring Framework\" class=\"wp-image-88256\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/core-container-module.jpg 514w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/core-container-module-300x208.jpg 300w\" sizes=\"(max-width: 514px) 100vw, 514px\" \/><figcaption>Core Container Module  <\/figcaption><\/figure>\n<\/div>\n<p><strong>Tip:<\/strong><br \/><em>If you are a complete newbie. The Core Container is the thing for you to get familiar first. If you understand this well, you can easily pick up any Spring Module.<\/em><\/p>\n<h2 class=\"wp-block-heading\">Spring Core<\/h2>\n<p>The&nbsp;<strong>Core<\/strong>&nbsp;module contains basic Spring Framework classes including Dependency Injection (DI) and Inversion of Control (IOC). The Spring Core is available at&nbsp;<a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-core\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Spring Core Repo<\/a>. No matter which type of Spring Application you are building, you will always have direct or indirect dependency over Spring Core.<\/p>\n<h2 class=\"wp-block-heading\">Spring Bean<\/h2>\n<p><strong>Spring Bean<\/strong> module manages the lifecycle of beans. In the Spring Framework a Bean is any Java Class which is registered with Spring and Spring manages these bean classes. The Spring Bean module has a <em>Bean&nbsp;Factory<\/em> which creates bean instances, resolves bean to bean dependencies, and auto-wires the beans based on the name, or type.<br \/>Spring Bean module can be found on the <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-beans\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\"repo (opens in a new tab)\">Spring Beans Repo<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Spring Context<strong>S<\/strong><\/h2>\n<p>We learnt that Spring Bean are responsible for managing the Spring Beans. These Spring Beans are defined in the context called as a Context. In Spring every objet is a Bean, let it be a config entry or a user defined class (For example Employee). All such beans, their constructors or factory methods and dependencies are defined in the Context. The beans are accessed via Context.<\/p>\n<p>Most of the time the Spring Context is started when a Spring Application starts and hence called as Application Context. Link to <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-context\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\"Spring Context Repo (opens in a new tab)\">Spring Context Repo<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">SpEL<\/h2>\n<p>The SpEL stands for <strong>Spring&nbsp;Expression&nbsp;Language<\/strong>, it a power full expression language. It is used to resolve expressions to values at runtime. SpEL can query objects graphs on runtime and can be used in XML or annotation based Bean Definition and Bean Configuration. The word runtime is really important here, as the expressions can be evaluated based on runtime configuration or values of other expressions.<br \/>Can be found at Spring <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-expression\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\"Expression Language Repo (opens in a new tab)\">Expression Language Repo<\/a>.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<h3 class=\"wp-block-heading\">Spring Web<\/h3>\n<p>As it is quite obvious from the name it self, the <strong>Spring Web<\/strong> components are used to build web applications. Using the Spring Web module we can build complete MVC applications, interceptors, Web Services, Portlets.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"510\" height=\"321\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/web-module.jpg\" alt=\"Spring Framework\" class=\"wp-image-88257\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/web-module.jpg 510w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/web-module-300x189.jpg 300w\" sizes=\"(max-width: 510px) 100vw, 510px\" \/><figcaption>Web Module <\/figcaption><\/figure>\n<\/div>\n<p>Let\u2019s have a brief look at the web components.<\/p>\n<h2 class=\"wp-block-heading\">Spring Web &amp; Servlet<\/h2>\n<p>Spring Web and Servlets provides many features for building web integrations. We saw what is an Application Context in one of the sections above. Spring Web provides a Web Application Context which is similar to the context. Spring Web provides an abstraction for servlets and also Inversion of Control (IOC).<br \/>Can be found at <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-web\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\"Spring Web Repo (opens in a new tab)\">Spring Web Repo<\/a>.<\/p>\n<p>There is one more component of Spring Web and that is Spring MVC. Spring MVC provides a mechanism for building Model View Controller based web applications. Spring MVC has a concept of View and Actions. Views represents the User Interface or a consumer and Action is the component that serves web request. <br \/>Can be found at <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-webmvc\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\"Spring Web MVC Repo (opens in a new tab)\">Spring Web MVC Repo<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Spring Web Sockets<\/h2>\n<p>Spring Web Sockets provides support for building Web Sockets. Web Sockets are a sort of tunnel between a service and a consumer in web applications. In the HTTP connections the client has to poll on the server for any updates. With Web Sockets there is a bidirectional communication socket between both of them so that even servers can push messages to clients directly. <br \/>Can be found at <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-websocket\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\"Spring Web Sockets Repo (opens in a new tab)\">Spring Web Sockets Repo<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Spring Web Portlets<\/h2>\n<p><strong>Spring Web Portlets<\/strong> supports building web poerlets. <strong>Portlets<\/strong>&nbsp;are pluggable user interface software components that are managed and displayed in a&nbsp;<strong>web<\/strong>&nbsp;portal. In other words it is a mechanism to show User Interfaces of multiple applications (portlets) on a single User Interface. Usually these portlets are pluggable and arrangeable.<br \/>Can be found at <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-webmvc-portlet\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\"Spring Web Portlet (opens in a new tab)\">Spring Web Portlet Repo<\/a>.<\/p>\n<h3 class=\"wp-block-heading\">Spring Data Access<\/h3>\n<p>The <strong>Spring Data Access<\/strong> is a set of modules, for accessing data in various formats including Database, Messaging, and XML. Let\u2019s have a brief overview of the modules<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"494\" height=\"304\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/data-access-module.jpg\" alt=\"Spring Framework\" class=\"wp-image-88259\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/data-access-module.jpg 494w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/data-access-module-300x185.jpg 300w\" sizes=\"(max-width: 494px) 100vw, 494px\" \/><figcaption>Data Access Module <\/figcaption><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\">Spring JDBC<\/h2>\n<p>The <strong>Spring&nbsp;JDBC<\/strong> provides abstraction over Java JDBC API. When we need to access data from databases we usually need to deal with Statements, Queries, ResultSets and especially exceptions. Spring JDBC abstraction, removes all this complexity and provides <strong>JdbcTemplate<\/strong> to easily access data. It also provide ways of iterating and mapping the result sets.<br \/>Can be found at <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-jdbc\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\"Spring JDBC Repo (opens in a new tab)\">Spring JDBC Repo<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Spring ORM<\/h2>\n<p><strong>Spring ORM<\/strong> provides support for integrating with various ORM implementations. ORM stands for <strong>Object&nbsp;Relational&nbsp;Mapping<\/strong> frameworks where data is mapped to a Java Object field by field. With ORM frameworks a plain Java object can be populated with data and passed to the ORM API to store and similarly retrieve the data in form of plain Java objects. Spring provides support for popular ORM frameworks like Hibernate, JDO, and also JPA.<br \/>Cab be found at <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-orm\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\"Spring Object\/Relational Mapping Repo (opens in a new tab)\">Spring Object\/Relational Mapping Repo<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Spring JMS<\/h2>\n<p>The JMS stands for Java Messaging Service, which defines specification for Publisher and Subscriber communication in the form of messages. Spring JMS provides an abstraction over various JMS implementations like ActiveMQ and RabbitMQ.<br \/>Can be found at <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-jms\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\"Spring JMS Repo (opens in a new tab)\">Spring JMS Repo<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Spring OXM<\/h2>\n<p><strong>Spring OXM<\/strong> provides abstraction over Java OXM implementations. The Java OXM (Object XML Marshalling) specification defines way of transferring and accessing data in the form of XML. There are various implementations of OXM like JAXB and XStream.<br \/>Cab be found at <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-oxm\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">Spring Object\/XML Marshalling&nbsp;Repo<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Spring Transactions<\/h2>\n<p>Spring Transactions Management API provides uniform way of managing transactions of data objets as well as databases. The Transaction API is support both programmatic as well as declarative transaction management.<br \/>Can be found at <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-tx\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\" (opens in a new tab)\">Spring Transaction Repo<\/a>.<\/p>\n<h3 class=\"wp-block-heading\">Miscellaneous Modules<\/h3>\n<p>Now we have reached to the last part of the tutorials. In this section we will learn about Spring\u2019s important be kind of independent modules which can be considered as Miscellaneous category.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"506\" height=\"323\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/miscellaneous-modules.jpg\" alt=\"Spring Framework\" class=\"wp-image-88260\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/miscellaneous-modules.jpg 506w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/miscellaneous-modules-300x192.jpg 300w\" sizes=\"(max-width: 506px) 100vw, 506px\" \/><figcaption>Miscellaneous Modules <\/figcaption><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\">Spring AOP<\/h2>\n<p><strong>Spring AOP<\/strong> is an implementation of Aspect Oriented Programming. An Aspect is any secondary task which an object needs to perform. Each object is Java has a dedicated responsibility apart from this it may have to do some secondary things like logging, or exception handling. Aspect Oriented Programming provides a mechanism for taking such secondary responsibilities out of the objects and giving them to proxy objects which doubles the original objects.<br \/>Can be found at <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-aop\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\" (opens in a new tab)\">Spring AOP&nbsp;Repo<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Spring Aspects<\/h2>\n<p>We have learnt what is Aspect Oriented Programming. Spring Aspects provides a uniform way of integrating with other Aspect Oriented Programming implementations like AspecJ.<br \/>Can be found at <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-aspects\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\" (opens in a new tab)\">Spring Aspects Repo<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Spring Instrumentation<\/h2>\n<p>The <strong>Spring Instrumentation<\/strong> module provides support for class instrumentation. The instrumentation is used for monitoring performance of an application. It monitors various object to diagnose application problems and log them.<br \/>Can be found at <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-instrument\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\" (opens in a new tab)\">Spring Instrument&nbsp;Repo<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Spring Messaging<\/h2>\n<p>The <strong>Spring&nbsp;Messaging<\/strong> provides support for integrating with messaging systems. The module provides simplified and uniform way of interacting with various messaging services.<br \/>Can be found at <a href=\"https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-messaging\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" aria-label=\" (opens in a new tab)\">Spring Messaging&nbsp;Repo<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n<p>In this article we leant about Spring Framework Architecture. Spring is a huge framework having multiple module. The Core Container is back bone of everything in Spring and all other modules are dependent of Core. Along with core we have also had look at Spring Web, Spring Data Access and few miscellaneous modules.<br \/>In the upcoming sections we will continue exploring Spring Framework. Stay tuned!<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>\n<p>Published on Java Code Geeks with permission by Amit Phaltankar, partner at our <a href=\"\/\/www.javacodegeeks.com\/join-us\/jcg\/\" target=\"_blank\" rel=\"noopener\">JCG program<\/a>. See the original article here: <a href=\"http:\/\/www.amitph.com\/spring-framework-architecture\/\" target=\"_blank\" rel=\"noopener\">Spring Framework Architecture<\/a><\/p>\n<p>Opinions expressed by Java Code Geeks contributors are their own.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>This is an overview of Spring Framework Architecture. Learn how the various components of Spring Framework are organised and relates to each other. If you want to know what is Spring framework and its features please read Introduction to Spring Framework. Overview Spring is a modular framework. It doesn\u2019t come as a package or bundle &hellip;<\/p>\n","protected":false},"author":75543,"featured_media":240,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[30],"class_list":["post-88248","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-spring"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Spring Framework Architecture - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Interested to learn about Spring Framework? Check our article explaining how various components of Spring Framework are organised and relates to each other.\" \/>\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\/2019\/02\/spring-framework-architecture.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring Framework Architecture - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Interested to learn about Spring Framework? Check our article explaining how various components of Spring Framework are organised and relates to each other.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.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:author\" content=\"https:\/\/www.facebook.com\/amit.ph01\" \/>\n<meta property=\"article:published_time\" content=\"2019-02-12T17:00:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-02-18T12:18:08+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=\"Amit Phaltankar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@amitrph\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Amit Phaltankar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/02\\\/spring-framework-architecture.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/02\\\/spring-framework-architecture.html\"},\"author\":{\"name\":\"Amit Phaltankar\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/11579ea8a790900129c1010a304fe1a9\"},\"headline\":\"Spring Framework Architecture\",\"datePublished\":\"2019-02-12T17:00:47+00:00\",\"dateModified\":\"2019-02-18T12:18:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/02\\\/spring-framework-architecture.html\"},\"wordCount\":1495,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/02\\\/spring-framework-architecture.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/spring-logo.jpg\",\"keywords\":[\"Spring\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/02\\\/spring-framework-architecture.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/02\\\/spring-framework-architecture.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/02\\\/spring-framework-architecture.html\",\"name\":\"Spring Framework Architecture - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/02\\\/spring-framework-architecture.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/02\\\/spring-framework-architecture.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/spring-logo.jpg\",\"datePublished\":\"2019-02-12T17:00:47+00:00\",\"dateModified\":\"2019-02-18T12:18:08+00:00\",\"description\":\"Interested to learn about Spring Framework? Check our article explaining how various components of Spring Framework are organised and relates to each other.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/02\\\/spring-framework-architecture.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/02\\\/spring-framework-architecture.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/02\\\/spring-framework-architecture.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\\\/2019\\\/02\\\/spring-framework-architecture.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 Framework Architecture\"}]},{\"@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\\\/11579ea8a790900129c1010a304fe1a9\",\"name\":\"Amit Phaltankar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/414fb2f44cac7c1d28c9f0e9f0532036dc1bb60eda56a77c0285459f1dea8df8?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/414fb2f44cac7c1d28c9f0e9f0532036dc1bb60eda56a77c0285459f1dea8df8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/414fb2f44cac7c1d28c9f0e9f0532036dc1bb60eda56a77c0285459f1dea8df8?s=96&d=mm&r=g\",\"caption\":\"Amit Phaltankar\"},\"description\":\"Amit Phaltankar is a Technology enthusiast who has huge passion for sharing what he knows. Amit works as a Java Technology Lead and has huge experience in Programming, Unit Testing, OOAD, Functional Programming, Big Data Technologies, micro-services, and Databases.\",\"sameAs\":[\"http:\\\/\\\/www.amitph.com\\\/\",\"https:\\\/\\\/www.facebook.com\\\/amit.ph01\",\"https:\\\/\\\/au.linkedin.com\\\/in\\\/amitph\",\"https:\\\/\\\/x.com\\\/amitrph\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/amit-phaltankar\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Spring Framework Architecture - Java Code Geeks","description":"Interested to learn about Spring Framework? Check our article explaining how various components of Spring Framework are organised and relates to each other.","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\/2019\/02\/spring-framework-architecture.html","og_locale":"en_US","og_type":"article","og_title":"Spring Framework Architecture - Java Code Geeks","og_description":"Interested to learn about Spring Framework? Check our article explaining how various components of Spring Framework are organised and relates to each other.","og_url":"https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_author":"https:\/\/www.facebook.com\/amit.ph01","article_published_time":"2019-02-12T17:00:47+00:00","article_modified_time":"2019-02-18T12:18:08+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":"Amit Phaltankar","twitter_card":"summary_large_image","twitter_creator":"@amitrph","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Amit Phaltankar","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.html"},"author":{"name":"Amit Phaltankar","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/11579ea8a790900129c1010a304fe1a9"},"headline":"Spring Framework Architecture","datePublished":"2019-02-12T17:00:47+00:00","dateModified":"2019-02-18T12:18:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.html"},"wordCount":1495,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","keywords":["Spring"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.html","url":"https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.html","name":"Spring Framework Architecture - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","datePublished":"2019-02-12T17:00:47+00:00","dateModified":"2019-02-18T12:18:08+00:00","description":"Interested to learn about Spring Framework? Check our article explaining how various components of Spring Framework are organised and relates to each other.","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2019\/02\/spring-framework-architecture.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\/2019\/02\/spring-framework-architecture.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 Framework Architecture"}]},{"@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\/11579ea8a790900129c1010a304fe1a9","name":"Amit Phaltankar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/414fb2f44cac7c1d28c9f0e9f0532036dc1bb60eda56a77c0285459f1dea8df8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/414fb2f44cac7c1d28c9f0e9f0532036dc1bb60eda56a77c0285459f1dea8df8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/414fb2f44cac7c1d28c9f0e9f0532036dc1bb60eda56a77c0285459f1dea8df8?s=96&d=mm&r=g","caption":"Amit Phaltankar"},"description":"Amit Phaltankar is a Technology enthusiast who has huge passion for sharing what he knows. Amit works as a Java Technology Lead and has huge experience in Programming, Unit Testing, OOAD, Functional Programming, Big Data Technologies, micro-services, and Databases.","sameAs":["http:\/\/www.amitph.com\/","https:\/\/www.facebook.com\/amit.ph01","https:\/\/au.linkedin.com\/in\/amitph","https:\/\/x.com\/amitrph"],"url":"https:\/\/www.javacodegeeks.com\/author\/amit-phaltankar"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/88248","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\/75543"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=88248"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/88248\/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=88248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=88248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=88248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}