{"id":18798,"date":"2024-03-15T17:38:27","date_gmt":"2024-03-15T17:38:27","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/"},"modified":"2024-03-21T14:10:14","modified_gmt":"2024-03-21T14:10:14","slug":"what-is-the-principle-behind-the-implementation-of-the-spring-class-loader","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/","title":{"rendered":"What is the principle behind the implementation of the Spring class loader?"},"content":{"rendered":"<p>Spring utilizes the parent delegation model to implement class loaders. In Spring, the two main class loaders used are AppClassLoader and ExtClassLoader.<\/p>\n<p>AppClassLoader is the application class loader, a subclass of the ClassLoader class, responsible for loading classes in an application. When a class needs to be loaded, AppClassLoader first checks if it has already loaded the class. If not, it delegates to ExtClassLoader to try and load it. If ExtClassLoader also has not loaded the class, then AppClassLoader will try to find and load the class from the classpath.<\/p>\n<p>ExtClassLoader is the extension class loader, which is a subclass of the ClassLoader class, responsible for loading Java&#8217;s extension libraries. When a class needs to be loaded, ExtClassLoader first checks if it has already loaded the class. If not, it delegates to the BootstrapClassLoader to try to load it. If BootstrapClassLoader has not loaded the class either, then ExtClassLoader will try to locate and load the class from the JRE&#8217;s extension directory.<\/p>\n<p>BootstrapClassLoader is the boot class loader, built into the JVM, responsible for loading the classes needed by the JVM itself. It serves as the root loader for all class loaders, without a parent loader. When a class needs to be loaded, BootstrapClassLoader will first attempt to locate and load the class from the JVM&#8217;s internal class library.<\/p>\n<p>This is the basic principle of how Spring class loaders work. By using the delegation model, Spring ensures consistency in the order and process of loading classes, preventing duplicate loading and conflicts. Additionally, Spring offers custom class loaders for loading specific classes or resources to meet different needs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spring utilizes the parent delegation model to implement class loaders. In Spring, the two main class loaders used are AppClassLoader and ExtClassLoader. AppClassLoader is the application class loader, a subclass of the ClassLoader class, responsible for loading classes in an application. When a class needs to be loaded, AppClassLoader first checks if it has already [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-18798","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What is the principle behind the implementation of the Spring class loader? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is the principle behind the implementation of the Spring class loader?\" \/>\n<meta property=\"og:description\" content=\"Spring utilizes the parent delegation model to implement class loaders. In Spring, the two main class loaders used are AppClassLoader and ExtClassLoader. AppClassLoader is the application class loader, a subclass of the ClassLoader class, responsible for loading classes in an application. When a class needs to be loaded, AppClassLoader first checks if it has already [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T17:38:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T14:10:14+00:00\" \/>\n<meta name=\"author\" content=\"Emily Johnson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Emily Johnson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/\"},\"author\":{\"name\":\"Emily Johnson\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3b041b19cffc258705478ecfab895378\"},\"headline\":\"What is the principle behind the implementation of the Spring class loader?\",\"datePublished\":\"2024-03-15T17:38:27+00:00\",\"dateModified\":\"2024-03-21T14:10:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/\"},\"wordCount\":282,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/\",\"name\":\"What is the principle behind the implementation of the Spring class loader? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T17:38:27+00:00\",\"dateModified\":\"2024-03-21T14:10:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What is the principle behind the implementation of the Spring class loader?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3b041b19cffc258705478ecfab895378\",\"name\":\"Emily Johnson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a5cb4e73d02ab1d79f2dfe919389ff7c1de072baa97686392031c03d858cc358?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a5cb4e73d02ab1d79f2dfe919389ff7c1de072baa97686392031c03d858cc358?s=96&d=mm&r=g\",\"caption\":\"Emily Johnson\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/emilyjohnson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"What is the principle behind the implementation of the Spring class loader? - Blog - Silicon Cloud","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.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/","og_locale":"en_US","og_type":"article","og_title":"What is the principle behind the implementation of the Spring class loader?","og_description":"Spring utilizes the parent delegation model to implement class loaders. In Spring, the two main class loaders used are AppClassLoader and ExtClassLoader. AppClassLoader is the application class loader, a subclass of the ClassLoader class, responsible for loading classes in an application. When a class needs to be loaded, AppClassLoader first checks if it has already [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T17:38:27+00:00","article_modified_time":"2024-03-21T14:10:14+00:00","author":"Emily Johnson","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Emily Johnson","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/"},"author":{"name":"Emily Johnson","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3b041b19cffc258705478ecfab895378"},"headline":"What is the principle behind the implementation of the Spring class loader?","datePublished":"2024-03-15T17:38:27+00:00","dateModified":"2024-03-21T14:10:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/"},"wordCount":282,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/","url":"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/","name":"What is the principle behind the implementation of the Spring class loader? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T17:38:27+00:00","dateModified":"2024-03-21T14:10:14+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-principle-behind-the-implementation-of-the-spring-class-loader\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"What is the principle behind the implementation of the Spring class loader?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3b041b19cffc258705478ecfab895378","name":"Emily Johnson","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a5cb4e73d02ab1d79f2dfe919389ff7c1de072baa97686392031c03d858cc358?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a5cb4e73d02ab1d79f2dfe919389ff7c1de072baa97686392031c03d858cc358?s=96&d=mm&r=g","caption":"Emily Johnson"},"url":"https:\/\/www.silicloud.com\/blog\/author\/emilyjohnson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/18798","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=18798"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/18798\/revisions"}],"predecessor-version":[{"id":52502,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/18798\/revisions\/52502"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=18798"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=18798"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=18798"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}