工作三年,初探得Spring原理,现在分享一下从宏观上理解一下Spring启动是如何加载Bean的。我们知道Spring所有的bean都是放在容器里面的,Spring的顶级容器BeanFactory定义了容器的基本规范,最直白的说法就是定义了如何获取Bean的方法,那么既然能从容器中获取Bean那就必须先把JavaBean放到容器里面。放到里面的是对象,既然            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-25 14:53:27
                            
                                87阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            汽车类比汽车的生产流程大概是这样的,在生产汽车之前先有汽车的图纸,再根据图纸把各个零件组装成汽车,然后把组装完的汽车发往各地的进行贩卖。  小时打算买辆大指挥官,然后就去4s店问,人家说还没造出来呢,得先等造出来。我问他图纸有了吗,他们说有了,正在组装呢,那我就先等着吧。  其实spring的bean加载过程跟汽车的工厂差不多。  我们根据汽车,看spring的bean加载的流程,其中有几个关键词            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-18 12:22:08
                            
                                69阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Spring的类加载机制Spring类加载机制的简单图Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl + Q
插入链接 Ctrl + L
插入代码 Ctrl + K
插入图片 Ctrl + G
提升标题 Ctrl            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-22 10:10:15
                            
                                42阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # Spring Boot 类加载过程详解
在理解Spring Boot的类加载过程之前,我们首先需要认识Spring Boot的整体架构,以及Spring Boot中类加载的基本概念。Spring Boot 是一个用于简化Spring应用程序开发的框架,它自动配置Spring应用以及快速构建生产级应用。接下来,我们将一步步带你了解Spring Boot的类加载过程。
## Spring Bo            
                
         
            
            
            
            -- 以下内容均基于2.1.8.RELEASE版本在《SpringBoot启动过程的分析》系列文章中简要的对SpringBoot整体的启动流程作了梳理,但并未针对诸多细节进行分析。前面的篇章中介绍了从SpringBoot应用程序入口开始执行,一直到上下文刷新完成。期间它加载了所有的类,但是并未直接指出它是在哪个环节加载的类,在加载的过程中如何处理的,以及我们在程序入口所使用的各种注解是如何解析的。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-25 23:16:30
                            
                                688阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            下图是spring启动过程中加载一个类到 IOC 容器的整个流程:1.加载流程描述 开发人员一般通过xml文件中定义 bean 标签或者加spring的相关注解(如 @Component、@Service、@Controller、@Configuration 等相关注解)让 spring 启动的时候识别需要加载的类,通过 Bean 的阅读器(BeanDefinitionReader )加            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-05 11:12:41
                            
                                94阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1 Java虚拟机的体系结构JVM 结构图如下: 如上图,类加载机制就是讲类加载器是如何找到指定的 .class 文件以及怎样将 .class 文件装载进内存,以便执行引擎执行 .class 文件中存在的数据和指令,从而使你的 Java 程序跑起来。2 类的生命周期 如上图,类加载机制主要包含加载、验证、准备、解析、初识化这些过程,最后就是真正可以将类加载进内存的一个玩意(还是依靠代码实现)——类            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-27 07:43:27
                            
                                15阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一句话描述spring加载过程ClassPathXmlApplicationContext实现beanFactory接口,是一个具体的实例化工厂。服务器启动时,解析xml配置文件,将对应文件中每个bean的id作为key,属性封装到beandefinition(是个对象)作为value,封装到一个ConCurrentHashMap容器A中。  同时,还有一个ConCurrentHashM            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-25 17:42:42
                            
                                108阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            参考网站:当Web应用启动时,contextInitialized方法会执行载入根上下文(IOC容器):(1)spring的web项目启动的时候会,启动我们常用的监听类。      <context-param> <param-name>contextConfigLocation</param-name> <param-val            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-23 21:41:34
                            
                                48阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            类加载器的分类JVM 支持的类加载器是分成两类的:1、引导类加载器(BootstrapClassLoader)2、自定义类加载器(User-Defined ClassLoader)但在上面图示中,我们发现了加载阶段涉及:BootstrapClassLoader、ExtClassLoader、ApplicationClassLoader 所以这个是不是觉得有点矛盾呢?从概念上来讲,自定义类加载器一般            
                
         
            
            
            
            一、概述SpringBoot的启动流程入下图所示,它主要分为加载主启动类和解析启动类两个部分,我将从这两个部分分别开始介绍。二、加载主启动类首先点入SpringApplication.run方法SpringApplication.prepareContext方法 SpringApplication.applyInitializers方法 再返回SpringApplication            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-14 09:59:15
                            
                                336阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1.实例化容器:AnnotationConfigApplicationContext这里主要分析注解形式的源码,我们启动容器的时候,虽然只是new了一个AnnotationConfigApplicationContext对象,但是在这个过程中spring处理了很多的事情。AnnotationConfigApplicationContext context = new AnnotationConfi            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-05 13:32:12
                            
                                155阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            写在前面 本文分析的是直接运行main函数的启动过程,关于通过jar包启动方式分析,jar启动最终也会执行到这里,只不过前面多了写通过自定义类加载器加载lib和class的逻辑。这里贴下多出来的这部分内容: 入口很简单,就是我们的main程序,可能如下:@SpringBootApplication
public class HelloWorldMainApplication {
    publ            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-06 20:19:46
                            
                                1007阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            SpringBoot事物的加载过程 文章目录SpringBoot事物的加载过程同系列一、前言二、事物自动装配加载2.1、TransactionAutoConfiguration类2.2、AdviceModeImportSelector & selectImports方法2.3、TransactionManagementConfigurationSelector & selectIm            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-11 08:58:18
                            
                                169阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1.简介Spring的启动分为关键步骤,首先是将配置文件中定义的<bean>信息加载到BeanDefintionRegistry中。然后通过BeanFactory中的getBean方法来将BeanDefinition进行实例化,开始整个bean的生命周期。2.BeanDefinitionReaderpublic interface BeanDefinitionReader {
	Bea            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-25 21:02:45
                            
                                57阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            我们知道启动spring容器两常见的两种方式(其实都是加载spring容器的xml配置文件时启动的):1.在应用程序下加载  ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-context.xml");  2.web模式下加载  <context-param>
    <param-name&            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-26 06:27:39
                            
                                91阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            类的生命周期 类加载过程 加载 验证 准备 解析 初始化 卸载 类的生命周期 一个类的完整生命周期如下: 类加载过程 Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢? 系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分 ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-10-28 23:46:00
                            
                                159阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现这个类进行初始化。 1. 加载 加载,是指Java虚拟机查找字节流(查找.class文件),并且根据字节流创建java.lang.Class对象的过程。这个过程,将类的.class文件中的二进制数据读入内存,放 ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-07-27 10:48:00
                            
                                116阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            一个类从加载到内存开始,一直到被卸载结束,它的整个生命周期包括 、`链接(验证、准备、解析) 初始化 使用 卸载`阶段 类初始化条件 加载 验证 准备 解析 初始化            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-07-15 18:27:14
                            
                                179阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            类的加载、 类加载器子系统 字节码生成(javac 命令,.java->.class),简单编译原理,词法分析、语法分析、语义分析和中间代码生成、优化、目标代码生成 加载 class二进制流字节码读取进方法区,在内存中生成一个java.lang.Class代表该对象作为访问入口 验证 文件格式验证: ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-04-22 23:35:00
                            
                                156阅读
                            
                                                                                    
                                2评论