spring 什么时候加载
-
Spring框架是一个轻量级的Java开发框架,它提供了大量的功能和特性来简化Java应用程序的开发过程。在Spring框架中,Bean是被管理和控制的基本单位,那么什么时候Spring框架会加载Bean呢?
Spring框架在加载Bean时,主要有以下几个阶段:
-
配置文件加载阶段:Spring框架首先会从配置文件中加载Bean的定义和相关配置信息。Spring支持多种配置文件格式,主要有XML、注解和JavaConfig三种方式。配置文件可以根据实际需求选择使用一种或多种方式进行配置。
-
Bean实例化阶段:在配置文件加载完毕后,Spring框架会根据配置文件中的定义,实例化Bean对象。Spring支持两种方式来实例化Bean,即通过构造方法实例化和通过工厂方法实例化。
-
属性设置阶段:在Bean实例化完成后,Spring框架会通过反射机制将配置文件中定义的属性值注入到Bean对象中。属性注入可以通过setter方法注入、构造方法注入、字段注入等方式进行。
-
初始化阶段:在属性设置完成后,Spring框架会调用Bean的初始化方法进行一些初始化操作。初始化方法可以通过配置文件中的init-method属性指定,也可以通过实现InitializingBean接口或使用@PostConstruct注解进行标注。
-
销毁阶段:当应用程序关闭或Spring容器停止时,Spring框架会调用Bean的销毁方法进行一些清理操作。销毁方法可以通过配置文件中的destroy-method属性指定,也可以通过实现DisposableBean接口或使用@PreDestroy注解进行标注。
总之,Spring框架加载Bean的过程是在应用程序启动时进行的,根据配置文件中的定义和相关配置信息,依次完成配置文件加载、Bean实例化、属性设置、初始化和销毁等阶段,以实现对Bean的管理和控制。
1年前 -
-
在Spring框架中,有两个重要的时刻涉及到加载。一是Spring容器的加载时刻,即Spring容器的初始化过程;二是Bean的加载时刻,即创建和实例化Bean对象的过程。
-
Spring容器的加载时刻:
Spring容器的加载时刻发生在应用程序启动的时候。在传统的Java应用中,通常是在应用程序的main方法中通过创建Spring容器的实例来完成加载。在一些Web应用程序中,Spring容器的加载时刻可能会发生在Servlet容器的启动过程中。Spring容器的加载过程主要包括以下几个步骤:
a. 加载配置文件:Spring容器会读取指定的配置文件,通常是XML格式的配置文件,也可以是基于注解的配置或者基于Java代码的配置。
b. 解析配置文件:Spring容器会解析配置文件中定义的Bean信息,包括Bean的名称、类型、依赖关系等。
c. 创建Bean实例:Spring容器根据解析到的配置信息,创建相应的Bean实例。这一过程通常涉及到调用Bean的构造方法、工厂方法或者使用反射机制动态创建对象。
d. 设置Bean属性:Spring容器会根据配置文件中的属性值或者其他的依赖关系,设置Bean的属性。
e. 初始化Bean:Spring容器会调用Bean的初始化方法,对Bean进行必要的初始化。
f. 注册Bean:Spring容器会将创建完成的Bean注册到IOC容器中,以供其他Bean的依赖注入和使用。 -
Bean的加载时刻:
Bean的加载时刻发生在Spring容器初始化过程中的创建Bean实例阶段。具体加载时机涉及到以下几个方面:
a. 单例Bean:单例Bean在Spring容器启动时即被加载。Spring容器会在初始化过程中,根据配置文件中定义的单例Bean的信息,创建Bean实例并直接注册到IOC容器中。单例Bean一旦被加载就会一直存在于IOC容器中,直到应用程序关闭。
b. 延迟加载Bean:延迟加载Bean则是在初始化阶段并不立即创建,而是在真正需要使用时才创建。延迟加载可以节省初始化时的资源消耗,提高应用程序的启动效率。延迟加载通常通过设置Spring容器的相关配置属性来实现。
c. 原型Bean:原型Bean在每次使用时都会重新创建一个新的实例,而不是像单例Bean那样只创建一次并重复使用。
总之,Spring框架在应用程序启动的时候会加载Spring容器,然后在容器初始化的过程中加载并创建Bean对象。具体的加载时机取决于 Bean的作用域(单例、原型等)以及配置文件中的相关设置。
1年前 -
-
Spring框架在应用启动过程中会完成一系列的初始化和加载工作。具体来说,Spring框架的加载可以分为三个阶段:配置文件加载阶段、Bean定义加载阶段和Bean实例化加载阶段。
一、配置文件加载阶段
在这个阶段,Spring框架会获取应用的配置文件,并读取其中的配置信息。Spring支持多种配置文件格式,包括XML、Java注解和Java代码等。在配置文件加载阶段,Spring框架会解析配置文件,将配置信息存储到内存中的数据结构中,以便后续的操作。二、Bean定义加载阶段
在这个阶段,Spring框架会根据配置文件中的Bean定义信息,将这些定义信息转化为Spring内部的数据结构,以便后续的Bean实例化和依赖注入。Spring提供了多种方式来定义Bean,包括XML配置文件、Java注解和Java代码等。拿XML配置文件为例,Spring会读取配置文件中的Bean配置信息,并将其转化为BeanDefinition对象。BeanDefinition对象包含了Bean的类名、作用域、依赖关系等信息,以及构造函数、属性和方法的注入方式等。Spring会将所有的BeanDefinition对象存储到BeanFactory中。
三、Bean实例化加载阶段
在这个阶段,Spring框架会根据Bean定义加载阶段中生成的BeanDefinition对象,实例化Bean,并将其装配到容器中。Spring提供了多种实例化方式,包括构造器注入、setter方法注入和工厂方法注入等。当所有的Bean实例化和装配工作完成后,Spring框架会将应用的控制权交还给应用,在这之后,应用可以通过ApplicationContext来获取已经加载的Bean,并使用它们完成业务逻辑。
综上所述,Spring框架的加载过程包括配置文件加载、Bean定义加载和Bean实例化加载三个阶段。不同的加载阶段会完成不同的工作,最终将应用的控制权交给应用。这样一来,应用就可以通过获取已经加载的Bean来完成各种业务逻辑。
1年前