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

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).
主站蜘蛛池模板: 米易县| 阳山县| 大英县| 彭泽县| 台州市| 仲巴县| 泉州市| 建水县| 静宁县| 廊坊市| 浦北县| 隆回县| 区。| 紫金县| 泰宁县| 新兴县| 康保县| 宜昌市| 富源县| 获嘉县| 郯城县| 芒康县| 普定县| 巨鹿县| 河曲县| 汝阳县| 崇阳县| 广东省| 金川县| 汤阴县| 长春市| 甘德县| 榕江县| 清丰县| 会宁县| 潼南县| 门头沟区| 东城区| 阿克陶县| 凤阳县| 新余市|