美文网首页源码每周1000字Java学习笔记
spring-beans 深入源码之Bean Scopes

spring-beans 深入源码之Bean Scopes

作者: holly_wang_王小飞 | 来源:发表于2016-08-29 15:09 被阅读95次

    在定义一个bean得时候,可以选择声明一下bean的scope,例如每次都需要spring生成新的bean实例 你需要把scope声明称prototype。如果每次都需要获得同一个实例则声明成singleton即可。
    Scope Description
    Singleton 这个scope在spring中是默认的scope 意思在每个Ioc container中只有该bean的单一实例(单例模式)
    prototype 这个scope恰恰和singleton相反 单一的bean拥有很多个实例
    request 这个scope依赖于http 的request,每个请求会生成一个bean 实例 所以只能在web应用的context才能生效
    session 这个scope依赖于http 的session,每个session会创建一个bean实例 所以也是只能在web应用的context才能生效
    global-session 这个是全局的http session同样只有web应用才生效
    在test.xml中配置的scope

    Paste_Image.png

    是prototype的scope 其他的scope和这个配置一样

    除了以上几种scope 还可以自定义scope
    下面介绍一下 test中的自定义scope测试类SimpleScopeTests
    其中涉及到NoOpScope这个类 实现了 Scope接口
    Scope接口在org.springframework.beans.factory.config中
    Strategy interface used by a {@link ConfigurableBeanFactory},representing a target scope to hold bean instances in
    策略模式得接口,是拥有bean实例存在的target。
    NoOpScope 实现Scope后 空实现所有方法

    Paste_Image.png

    只是重写了get方法

    Paste_Image.png

    这个类是生成了两个TestBean实例 供按顺序调用 所以第一个和第二个不同 第三个和第一个却是相同的。

    相关文章

      网友评论

      本文标题:spring-beans 深入源码之Bean Scopes

      本文链接:https://www.haomeiwen.com/subject/fvpxettx.html