官术网_书友最值得收藏!

Scopes

A very neat feature of the CDI is to handle the scope life cycle for you. Concretely, you decorate your beans with @ApplicationScoped and @RequestScoped, and the life of the bean is either bound to the application (it is a singleton) or the request duration (which means you can have as many different instances as you have concurrent requests).

The scope implementation is called context, and the context is mainly responsible for looking up in the right contextual instance or creating it. An application scoped instance will be looked up in a single map shared by the entire application. However, a request scoped instance will also be looked up in ThreadLocal associated with the request life cycle through ServletRequestListener.

The implications on the performance are quite immediate:

  • The context setup can be pricey (depending on the scope) and can add some overhead that you may not require. In fact, if you have no @RequestScoped bean, you don't need the ServletRequestListener instance (even if not very expensive).
  • Recreating your bean every time the context needs it will trigger the process we saw in the previous part and the life cycle hooks of the bean (@PostConstruct and @PreDestroy).
主站蜘蛛池模板: 静宁县| 喀什市| 搜索| 醴陵市| 郧西县| 柳州市| 中阳县| 永昌县| 同江市| 南昌市| 随州市| 峨山| 乌兰县| 龙州县| 保山市| 延津县| 马边| 敦煌市| 乐陵市| 郸城县| 宜兴市| 敖汉旗| 织金县| 普兰县| 临澧县| 弋阳县| 车致| 绿春县| 卓资县| 大厂| 寿光市| 彰武县| 大竹县| 五河县| 黄石市| 崇州市| 高雄县| 苍山县| 广宁县| 南充市| 类乌齐县|