spring之bean的作用域

一 前言

五一了来一篇轻松的文章;关注公众号:知识追寻者;

知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)

二 bean的作用域

spring定义了多种bean的作用域,常用的4种如下:

  1. 单例(Singleton):在整个应用中,只创建bean的一个实例。
  2. 原型(Prototype):每次注入或者通过Spring应用上下文获取的时候,都会创建一个新的bean实例。
  3. 会话(Session):在Web应用中,为每个会话创建一个bean实例。
  4. 请求(Request):在Web应用中,为每个请求创建一个bean实例。

在spring容器中由spring管理的bean默认都是单例;

2.2 单例示例

使用@Scope注解指定作用域类型;

单例即一个对象仅有一个实例;

被单类

/**
 * @Author lsc
 * <p> </p>
 */
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
// 等同于@Scope("singleton")
@Component
public class Sheet {

}

配置类

/**
 * @Author lsc
 * <p> </p>
 */
@Configuration
@ComponentScan
public class Config {
}

测试

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
        // 单例测试
        Sheet sheetA = context.getBean(Sheet.class);
        Sheet sheetB = context.getBean(Sheet.class);
        // sheetA = sheetB? true
        System.out.println("sheetA = sheetB? " + sheetA.equals(sheetB));
    }

2.2 原型示例

原型就是多例,一个对象有多个实例;

棉类

/**
 * @Author lsc
 * <p> </p>
 */
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Component
public class Cotton {
}

测试

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
        // 原型 多例测试
        Cotton cottonA = context.getBean(Cotton.class);
        Cotton cottonB = context.getBean(Cotton.class);
        //  cottonA 与 cottonB 是否相等:false
        System.out.println("cottonA 与 cottonB 是否相等:" + cottonA.equals(cottonB));
        context.close();
    }
posted @   知识追寻者  阅读(225)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示