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

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).
主站蜘蛛池模板: 盘锦市| 潜山县| 洪湖市| 孙吴县| 绍兴市| 封丘县| 奉新县| 永丰县| 昌图县| 北川| 兴隆县| 桦甸市| 湟源县| 虎林市| 洞口县| 静宁县| 青海省| 丹巴县| 萍乡市| 静海县| 阜康市| 台前县| 璧山县| 镶黄旗| 淮安市| 西城区| 綦江县| 随州市| 通城县| 乌兰浩特市| 资兴市| 沭阳县| 博兴县| 山东省| 德江县| 陈巴尔虎旗| 上虞市| 炎陵县| 万年县| 马关县| 辽阳市|