Spring Bean作用域

7 5 月, 2021 81点热度 0人点赞 0条评论

作用域

来源 说明
prototype 原型作用域,每次依赖查找和依赖注入生成新bean对象
singleton 默认Spring Bean作用域,一个BeanFactory有且仅有一个实例
request 将Spring Bean 存储在ServletRequest上下文中
session 将Spring Bean存储在HttpSession中
application 将Spring Bean存储在ServletContext中

singleton Bean作用域

prototype Bean 作用域

Spring容器没有办法管理prototype Bean的完整声明周期,也没有办法记录实例的存在。销毁回调方法将不会执行,可以利用BeanPostProcessor进行清扫工作。

request Bean作用域

  • 配置

    • XML - <bean class="" scope="request">

    • Java注解 - @RequestScope 或 @Scope(WebApplicationContext.SCOPE_REQUEST)

  • 实现

    • API - RequestScope

对于界面的渲染而言,对象都是新的对象,其实返给前端的对象都是变化的,通过代理的方式保证每个对象是新生成的,但是对于内部@Autowired对象而言,使用的CGLIB代理对象,都是一样的。

session Bean作用域

  • 配置

    • XML - <bean class="" scope="session">

    • Java注解-@SessionScope或@Scope(WebApplicationContext.SCOPE_SESSION)

  • 实现

    • API-SessionScope

spring注入的对象始终都是cglib对象,但是根据cookie执行绑定,保证每次获取到的对象都是与session进行绑定的。

application Bean作用域

  • 配置

    • XML - <bean class="" scope="application">

    • Java注解-@ApplicationScope或@Scope(WebApplicationContext.SCOPE_APPLICATION)

  • 实现

    • API-ApplicationScope

专注着

一个奋斗在编程路上的小伙

文章评论