• singleton
    • 简介
    • 特别注意
    • 定义
    • 销毁

    singleton

    单例Bean全局只有一个共享的实例,所有将单例Bean作为依赖的情况下,容器返回将是同一个实例。

    换言之,当开发者定义一个Bean的作用域为单例时,Swoft IOC容器只会根据Bean定义来创建该Bean的唯一实例。这些唯一的实例会缓存到容器中,后续针对单例Bean的请求和引用,都会从这个缓存中拿到这个唯一的实例。

    简介

    singletonbean 会在框架启动时被初始化,并且只会初始化一次。
    singletonbean 进行写入操作是不安全的。如果同时读写singletonbean,会造成上下文切换导致bean数据不一致,这种往往是业务交叉造成的。。

    特别注意

    singleton 一般用于只读, 不要把它当做共享内存的方式。

    例如 swoftconfig bean,就是一个全局单例的。它只用于读取,在运行过程中不会发生改变。系统把config 写操作都抛出了异常。

    定义

    1. <?php declare(strict_types=1);
    2. namespace Swoft\Config;
    3. use Swoft\Bean\Annotation\Mapping\Bean;
    4. /**
    5. * Class Config
    6. *
    7. * @Bean("config")
    8. *
    9. * @since 2.0
    10. */
    11. class Config
    12. {
    13. }

    默认是 score 是全局单例的,创建单例的bean,你可以不用指定score

    销毁

    singleton 类型的 bean 只会在 主进程关闭 才会被销毁。