应用中,有时候我们需要一个对象在整个应用中只有一个,有些对象希望每次使用的时候都重新创建一 个,spring对我们这种需求也提供了支持,在spring中这个叫做bean的作用域,xml中定义bean的时 候,可以通过scope属性指定bean的作用域
<bean id="" class="" scope="作用域" />
如: spring容器中scope常见的有5种
- Singleton
- Prototype
- Request
- Session
- Application
想必大家都已经很熟悉了,这里就不做赘述了。下面我们要介绍的是自定义Scope
步骤
第1步:实现Scope接口
我们来看一下这个接口定义
public interface Scope {
/**
* 返回当前作用域中name对应的bean对象
* name:需要检索的bean的名称
* objectFactory:如果name对应的bean在当前作用域中没有找到,那么可以调用这个
ObjectFactory来创建这个对象
**/
Object get(String name, ObjectFactory<?> objectFactory);
/**
* 将name对应的bean从当前作用域中移除
**/
@Nullable
Object remove(String name);
/**
* 用于注册销毁回调,如果想要销毁相应的对象