spring 单例什么时候加载的

不及物动词 其他 25

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Spring单例对象是在容器启动时加载的。

    当Spring容器启动时,会根据配置文件或注解扫描的方式,实例化所有的Bean对象。对于指定为单例的Bean,Spring会在容器启动时就创建一个实例,并将其放入Spring容器中进行管理。所以,无论是否使用到该单例对象,它都会在容器启动时被加载进来。

    Spring的单例对象是全局唯一的,它的生命周期由Spring容器管理,直到容器关闭时才会被销毁。当我们在代码中需要使用这个单例对象时,只需要通过调用容器的getBean方法来获取该对象的实例即可。这样,不管在何时何地获取该对象,得到的都是同一个实例。

    需要注意的是,Spring的单例对象并不是在每次调用getBean方法时都重新创建实例,而是在第一次获取时创建,后续再次调用getBean方法时直接返回之前创建的实例。这保证了单例对象在整个应用生命周期中只有一个实例。

    总结起来,Spring的单例对象是在容器启动时加载的,它的生命周期由Spring容器管理,在整个应用运行过程中只有一个实例。我们只需要在需要使用该对象时通过容器获取即可。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在Spring中,单例Bean是在Spring容器启动时进行加载的。

    具体来说,当Spring容器启动时,会创建所有配置文件中定义的Bean实例。而对于单例Bean,Spring容器会在启动时实例化并初始化该Bean,然后将其放入容器的单例池中。在之后的请求中,如果需要使用这个单例Bean,容器会直接从单例池中返回已经创建好的实例。

    以下是单例Bean加载的过程:

    1. Spring容器启动:当应用启动时,Spring容器会初始化并启动,开始加载配置文件中定义的Bean。

    2. 解析配置文件:Spring容器会解析配置文件,读取文件中定义的Bean的信息。

    3. 创建Bean实例:根据配置文件中的Bean定义,Spring容器会实例化需要创建的Bean对象。对于单例Bean,即使没有被使用,也会在启动时创建实例。

    4. 初始化Bean:在创建Bean实例后,Spring容器会对其进行初始化,包括注入依赖、执行初始化方法等。

    5. 将单例Bean放入单例池:当一个单例Bean被初始化完成后,Spring容器会将其放入单例池中,以便在后续的请求中直接返回已经创建好的实例。

    需要注意的是,Spring的单例是指在同一个Spring容器中,同一个单例Bean会在整个容器的生命周期内只存在一个实例。但是,如果存在多个Spring容器,每个容器都会创建自己的单例Bean实例。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Spring框架中的单例Bean是在容器启动时被加载的。

    在Spring中,默认情况下,所有的Bean都是单例的,即只会创建一个实例。当容器启动时,Spring会根据配置文件或注解扫描的方式,解析并创建所有的Bean。这意味着在应用程序启动时,所有的单例Bean都会被实例化。

    以下是Spring单例Bean加载的流程:

    1. Spring容器启动
    2. 容器读取配置文件或扫描注解,获取所有需要被管理的Bean信息
    3. 根据Bean的定义,创建Bean的实例
    4. 当创建单例Bean时,Spring会将其存储在内存中的Bean工厂(也称为应用程序上下文)中
    5. 在整个应用程序的生命周期中,单例Bean只会被创建一次,之后可以被多个线程共享和访问
    6. 单例Bean在容器启动时就已经创建好,在需要使用时可以直接从容器中获取,无需再次创建

    需要注意的是,Spring的单例是在容器级别的,即同一个容器中的所有单例Bean共享一个实例。如果存在多个Spring容器,不同容器中相同名称的单例Bean是不共享的,它们将被创建成各自的实例。

    另外,Spring也提供了原型作用域的Bean,这种Bean每次被请求时都会创建一个新的实例。与单例不同,原型Bean没有被缓存,每次请求都会重新创建。这样就提供了更大的灵活性,适用于那些需要每次使用都是独立的Bean实例的情况。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部