spring 存储 bean实例的地方在哪里
时间: 2024-05-20 17:11:36 浏览: 73
在Spring中,bean实例的存储是由BeanFactory或ApplicationContext来完成的。BeanFactory是Spring的核心接口之一,它是一个工厂模式的实现,负责创建和管理bean实例。ApplicationContext是BeanFactory的子接口,它提供了更多的功能,例如国际化支持、事件发布、AOP等。
BeanFactory和ApplicationContext都可以将bean实例存储在内存中,以供需要时快速获取。在Spring中,bean实例的存储方式有很多种,例如单例模式、原型模式、会话作用域、请求作用域等。默认情况下,Spring会将bean实例存储在单例池中,以便在整个应用程序中共享。
相关问题
spring 存储 bean 实例的代码
Spring 存储 Bean 实例的代码主要是通过 BeanFactory 和 ApplicationContext 接口来实现的。
BeanFactory 是 Spring 的基本容器,它提供了对工厂模式的经典实现,即通过配置文件来进行 bean 的定义和创建,然后在应用中使用这些 bean。BeanFactory 接口中的 registerSingleton() 方法可以用来注册单例 bean 实例。
下面是一个示例代码:
```java
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
public class MySingletonBean {
// ...
}
```
ApplicationContext 是 BeanFactory 接口的扩展,它提供了更多的功能,如国际化支持、事件传递等。ApplicationContext 接口中的 getBean() 方法可以用来获取 bean 实例。
下面是一个示例代码:
```java
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyApp {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("my-config.xml");
MyBean myBean = context.getBean(MyBean.class);
// ...
}
}
```
在上面的代码中,我们通过 ClassPathXmlApplicationContext 类加载了配置文件 my-config.xml,并使用 getBean() 方法获取了 MyBean 的实例。
Spring加载Bean流程
Spring加载Bean的流程如下:
1. Spring启动,创建一个ApplicationContext容器。
2. ApplicationContext读取配置文件,解析其中的Bean定义,将Bean的定义信息存储在BeanFactory中。
3. ApplicationContext根据Bean定义信息创建Bean实例,并将其放入BeanFactory中。
4. 如果有依赖关系,ApplicationContext会解析依赖关系,并将依赖的Bean实例注入到需要它们的Bean中。
5. 如果有AOP(面向切面编程)的配置,ApplicationContext会解析AOP的相关配置信息,并将其与Bean关联起来。
6. Bean实例化完成后,ApplicationContext会执行一些生命周期的回调方法,如InitializingBean接口的afterPropertiesSet()方法和自定义的初始化方法。
7. 应用程序可以通过ApplicationContext获取Bean实例,使用这些Bean实例进行业务操作。
8. 当应用程序关闭时,ApplicationContext会执行Bean的销毁方法,如DisposableBean接口的destroy()方法和自定义的销毁方法。
总之,Spring加载Bean的流程就是读取配置文件,解析Bean定义,创建Bean实例并进行依赖注入和AOP配置,执行Bean的初始化方法和销毁方法,并提供Bean实例给应用程序使用。
阅读全文