spring启动时都创建哪些实例
-
Spring在启动时会创建以下几种实例:
-
BeanFactory:Spring的核心容器,负责管理和创建Bean对象。在Spring启动时,会创建一个BeanFactory实例,用于加载配置文件并实例化Bean。
-
ApplicationContext:是BeanFactory的子接口,提供了更多的功能,如国际化、事件传播、资源访问等。在Spring启动时,会创建一个ApplicationContext实例,用于管理整个应用的Bean对象。
-
BeanPostProcessor:Bean后置处理器是用于在Bean实例化后和初始化前进行一些自定义的操作。在Spring启动时,会扫描并创建所有的BeanPostProcessor实例,供后续的Bean实例化和初始化过程使用。
-
BeanDefinition:在加载配置文件时,Spring会解析配置文件,并将每个Bean的定义信息存储在BeanDefinition中。Spring启动时会创建BeanDefinition实例,用于描述Bean的属性、依赖关系等信息。
-
Singleton Objects:对于配置文件中声明为singleton作用域的Bean,Spring在启动时会创建相应的实例,并将其存储在一个全局的缓存中,以供后续的Bean获取和使用。
6.非单例对象: 对于配置文件中声明为prototype作用域的Bean,Spring在需要时会创建相应的实例,每次获取该Bean时都会返回一个新的实例。
- Bean的依赖对象:在Bean实例化过程中,如果一个Bean依赖于其他Bean,则Spring会在需要时创建相应的依赖对象,并将其注入到目标Bean中。
总结:Spring在启动时会创建BeanFactory、ApplicationContext、BeanPostProcessor、BeanDefinition等实例,同时还会创建配置文件中声明的单例Bean和其依赖对象。这些实例的创建和管理是Spring框架实现依赖注入和控制反转的基础。
1年前 -
-
在Spring启动时,会创建以下几种实例:
-
ApplicationContext实例:Spring的核心容器,负责管理和协调应用程序中的所有Bean。ApplicationContext是在应用程序启动时创建的。
-
BeanFactory实例:BeanFactory是ApplicationContext的父类,负责管理和加载Bean。在启动时,Spring会创建一个BeanFactory实例,并使用其加载和管理所有的Bean。
-
Singleton Bean实例:在Spring容器中,每个Bean默认都是单例的,也就是说在整个应用程序中只会创建一个实例。这些Singleton Bean实例会在启动时被创建。
-
Prototype Bean实例:与Singleton Bean不同,Prototype Bean是一种原型模式,每次获取Bean时都会创建一个新的实例。这些Prototype Bean实例在被获取时才会被创建,而不是在启动时就被创建。
-
Factory Bean实例:Factory Bean是一种特殊类型的Bean,它负责创建和管理其他Bean的实例。Factory Bean本身的实例在启动时会被创建,但它所管理的Bean的实例则是在被获取时才会被创建。
除了上述实例之外,还可能会创建其他类型的实例,例如:
- Aware接口实例:Aware接口是一组Spring框架提供的接口,用于让Bean感知特定的信息或资源。例如,ApplicationContextAware接口可以让Bean获取到ApplicationContext实例;BeanNameAware接口可以让Bean获取到自己在容器中的名称。在启动时,Spring会创建并并注入这些Aware接口实例。
总结起来,Spring在启动时会创建ApplicationContext、BeanFactory、Singleton Bean、Factory Bean以及Aware接口实例。而Prototype Bean则是在被获取时才会被创建。这些实例共同组成了Spring容器和应用程序的基础组件,为应用程序提供了依赖注入、管理和协调的功能。
1年前 -
-
在Spring框架中,启动时会创建多个实例,其中包括容器实例、Bean实例、组件扫描实例等。下面将从不同角度介绍Spring启动时创建的实例。
-
容器实例
Spring框架中有多种类型的容器,如ApplicationContext、WebApplicationContext等。在启动时,会创建这些容器实例。容器实例是整个Spring应用的核心,它负责管理和维护Bean的生命周期、依赖注入等。 -
Bean实例
Spring框架以IoC(Inversion of Control,控制反转)的方式管理Bean。启动时,会根据配置文件或注解信息创建Bean实例,并将其加入到对应的容器中。 -
组件扫描实例
Spring框架支持通过组件扫描的方式创建Bean实例。启动时,会扫描指定的包路径下的类文件,根据注解信息创建对应的Bean实例,并将其加入到容器中。常见的注解包括@Component、@Service、@Repository、@Controller等。 -
AOP切面实例
Spring框架中的AOP(Aspect-Oriented Programming,面向切面编程)模块可以实现对系统中各个模块的横切关注点进行解耦。启动时,会创建AOP切面实例,并将其织入到目标方法中,实现切面的功能。 -
事件监听器实例
Spring框架支持事件驱动的编程模式。启动时,会创建事件监听器实例,用于处理系统中发生的各种事件。可以通过配置文件或注解的方式定义监听器,并将其注册到容器中。 -
数据库连接池实例
在Spring框架中,可以使用连接池管理数据库连接。启动时,会创建数据库连接池实例,并配置相关参数,如最大连接数、最小空闲连接数等。 -
事务管理器实例
Spring框架提供了事务管理功能,可以通过配置事务管理器实例,启动时会创建相应的实例。事务管理器可以控制事务的边界,并管理事务的提交、回滚等操作。
以上是Spring框架在启动时创建的一些实例,它们共同组成了整个应用的基础架构。通过依赖注入和AOP等机制,实现了高度的模块化和解耦,提高了应用的灵活性和可维护性。
1年前 -