spring自定义范围

2025-06-29 16:22:50

1、bean范围机制是可扩展的。您可以定义自己的范围,甚至可以重新定义现有范围,尽管后者被认为是不好的做法,您无法覆盖内置 singleton 和 prototype 范围。

spring自定义范围

2、要将自定义作用域集成到Spring容器中,需要实现org.springframework.beans.factory.config.Scope 本节中描述的 接口。

spring自定义范围

3、该 Scope 接口有四种方法可以从作用域中获取对象,将其从作用域中删除,然后将其销毁。

4、例如,会话范围实现返回会话范围的bean(如果它不存在,则该方法在将其绑定到会话以供将来参考之后返回该bean的新实例)。以下方法从基础范围返回对象:

spring自定义范围

5、例如,会话范围实现从基础会话中删除会话范围的bean。应返回该对象,但如果找不到具有指定名称的对象,则可以返回null。以下方法从基础范围中删除对象:

spring自定义范围

6、以下方法记录范围在销毁时或范围中指定对象被销毁时应执行的回调:

spring自定义范围

7、以下方法获取基础范围的对话标识符:

spring自定义范围

8、在编写并测试一个或多个自定义 Scope 实现之后,需要让Spring容器知道您的新范围。以下方法是Scope 使用Spring容器注册new的核心方法:

spring自定义范围

9、此方法在 ConfigurableBeanFactory 接口上声明,该接口可通过 Spring随附的 BeanFactory 大多数具体 ApplicationContext 实现的属性获得。

spring自定义范围

10、该 regi衡痕贤伎sterScope(..) 方法的第一个参数是与范围关联的唯一名称。Spring容器本身中的这些名称的示例是 singleton 和 prototype 。该 registerScope(..) 方法的第二个参数是 Scope 您希望注册和使用的自定义实现的实际实例。

11、假设您编写自定义 Scope 实现,然后注册它,如下一个示例所示。

spring自定义范围

12、然后,您可以创建符合自定义的作用域规则的bean定义, Scope 如下所示:

spring自定义范围

13、使用自定义 Scope 实现,您不仅限于范围的编程注册。您还可以 Scope 使用CustomS罕铞泱殳copeConfigurer 该类以声明方式进行注册 ,如以下示例所示:

spring自定义范围
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢