【四】注册SimpleThreadScope,自定义Scope

Spring框架里面还有一个没有注册的Scope,SimpleThreadScope,通过这个学习下怎么自定义Scope。

把BeanConfig中PojoBean的配置改成@Scope("simpleThreadScope"),启动应用程序报错,如下两图:

原来是这个Scope没有注册,创建一个ApplicationListener用来注册simpleThreadScope,监听ApplicationPreparedEvent,在应用上下文准备好的时候注册这个simpleThreadScope,如下图:

在resources文件下建立文件夹META-INF,META-INF文件夹下面新建文件spring.factories,在文件中配置上图创建的ApplicationListener,如下两图:

重新启动应用,控制台打印如下图:

PojoBean只初始化一次,两个Service中的实例也相同,因为是同一个线程实例的,下面写个多线程测试下。

在BeanConfig中新配置一个CommandRunner Bean,它可以在应用启动后运行,如下图:

控制台的打印如下图:

日志有点多,耐心查看下,发现PojoBean实例了三次,第一次是之前的ServiceA和ServiceB中引用的PojoBean,它是属于主线程的PojoBean。后面又实例了两个PojoBean,它们分别是Thread-5和Thread-4的PojoBean,从这里看出SimleThreadScope起作用了,如果要自定义Scope的话,就可以参考这个类。

注意:SimleThreadScope也是只负责到创建生命周期,后面的生命周期要自己管理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值