JSF –渴望的CDI bean
每个人都知道JSF 2中热切的托管bean。@ ManagedBean具有eager属性。 如果eager ='true'并且范围是application,那么必须在应用程序启动时而不是在第一次引用该bean时创建此bean。 当您要在应用程序启动期间加载应用程序范围的数据(例如,菜单的某些选择项)以提高运行时的性能时,这是一个很好的功能。
@ManagedBean(eager=true)
@ApplicationScoped
public class GlobalBean {...
}
@ManagedBean批注将在JSF 2.2中弃用。 强烈建议在JEE环境中使用CDI(上下文依赖注入)bean。 但是,与CDI中急切管理的bean等效呢? 好吧,CDI非常灵活,您可以编写可移植的CDI扩展 。 我问托马斯·安德拉奇科(Thomas Andraschko)该怎么做。 Thomas是一位CDI专家,是PrimeFaces Extensions的共同所有者,也是OpenWebBeans(OWB)项目的提交者。 他的提示是实施如下扩展:
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({TYPE})
public @interface Eager
{
}
package mydomain.mypackage;import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.AfterDeploymentValidation;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.ProcessBean;public class EagerExtension implements Extension {private List<Bean<?>> eagerBeansList = new ArrayList<Bean<?>>();public <T> void collect(@Observes ProcessBean<T> event) {if (event.getAnnotated().isAnnotationPresent(Eager.class)&& event.getAnnotated().isAnnotationPresent(ApplicationScoped.class)) {eagerBeansList.add(event.getBean());}}public void load(@Observes AfterDeploymentValidation event, BeanManager beanManager) {for (Bean<?> bean : eagerBeansList) {// note: toString() is important to instantiate the beanbeanManager.getReference(bean, bean.getBeanClass(), beanManager.createCreationalContext(bean)).toString();}}
}
扩展应该在文件META-INF / services / javax.enterprise.inject.spi.Extension中注册。 该文件只有一行带有EagerExtension类的完全限定路径,例如mydomain.mypackage.EagerExtension。 使用很简单。 假设,我们有一个应用程序范围的LayoutController CDI bean,它负责整个布局配置。 我们可以使用@Eager对其进行注释,并加快布局的创建。
@ApplicationScoped
@Eager
@Named
public class LayoutController implements Serializable {private LayoutOptions layoutOptions;@PostConstructprotected void initialize() {layoutOptions = new LayoutOptions();LayoutOptions panes = new LayoutOptions();panes.addOption('slidable', false);panes.addOption('spacing', 6);layoutOptions.setPanesOptions(panes);...}public LayoutOptions getLayoutOptions() {return layoutOptions;}
}
享受CDI的乐趣!
参考: JSF –我们的JCG合作伙伴 Oleg Varaksin在软件开发博客上的想法中 渴望CDI bean 。
翻译自: https://www.javacodegeeks.com/2013/02/jsf-eager-cdi-beans.html
JSF –渴望的CDI bean相关推荐
- jsf绑定bean_JSF –渴望的CDI bean
jsf绑定bean 每个人都知道JSF 2中热切的托管bean.@ ManagedBean具有eager属性. 如果eager ='true'并且范围是application,那么必须在应用程序启动时 ...
- java ee cdi_Java EE CDI bean范围
java ee cdi Java EE平台的上下文和依赖注入(CDI)是一项功能,有助于将Java EE平台的Web层和事务层绑定在一起. CDI是一组服务,可以一起使用,使开发人员可以轻松地在Web ...
- Java EE CDI bean范围
Java EE平台的上下文和依赖注入(CDI)是一项功能,可帮助将Java EE平台的Web层和事务层绑定在一起. CDI是一组服务,可以一起使用,使开发人员可以轻松地在Web应用程序中使用企业bea ...
- jpa 忽略bean_在WildFly上将JPA和CDI Bean与骆驼一起使用
jpa 忽略bean 我并没有真正为此计划,但是在一个免费的会议月份中,我有机会进行了一些深入的探讨,并向您展示了WildFly-Camel子系统提供的WildFly魔术上的更多Camel. 商业背景 ...
- 在WildFly上将JPA和CDI Bean与骆驼一起使用
我并没有真正为此计划,但是在一个免费的会议月份中,我有机会进行了一些深入的探讨,并向您展示了WildFly-Camel子系统提供的WildFly魔术上的更多Camel. 商业背景 该演示来自Chris ...
- JSF学习笔记-Managed Bean
在书上看到些东西,觉得可以保存在博客里,结果在网上一搜,已经有人这么做了,那我就省省打字这点事吧. JSF使用 JavaBean 来达到程序逻辑与视图分离的目的,在JSF中的Bean其角色是属于Bac ...
- CDI——给bean取名字
参考: CDI技术第十步 给Bean取名字 @Named 这里研究的是javax.inject.Named 包下的 @Named 还是拿之前写的项目为例: 页面的显示 <p:dataList v ...
- IntelliJ IDEA 2014 付费版 免费版比较
http://www.jetbrains.com/idea/features/editions_comparison_matrix.html Freemarker, Velocity IDE Feat ...
- jsf教程_JSF范围教程– JSF / CDI会话范围
jsf教程 会话作用域跨越多个HTTP请求-响应周期(理论上是无限的). 当您需要每个HTTP请求-响应周期进行一次交互时,请求作用域在任何Web应用程序中都非常有用. 但是,当您需要对属于用户会话的 ...
最新文章
- 服务器搭建虚拟win云服务,云服务器创建win10虚拟机
- Scrum团队选择scrum看板工具的7点特征
- Android依赖注入:Google Guice on Android的使用及相关资源
- java 运算符_java 运算符
- 妈妈再也不用担心孩子偷玩手机了!微信升级“青少年模式”
- 从gb2py.idx中获取一个汉字的拼音首字母
- JavaScript数据类型之Undefined、Null、Boolean
- html5数学公式编辑器,数学公式编辑器的使用技巧
- ASP.NET Core使用Session
- Zmodem协议工作原理
- 基于SSM车牌识别停车场管理系统
- Insyde uefi 隐藏设置_固件级安全,微软安全工具新增UEFI扫描功能
- Skippr – 轻量、快速的 jQuery 幻灯片插件
- 全面了解风控指标体系
- 变量的定义以及数据类型
- matlab做胶州湾地图,惊了,青岛也有了五环地图,快来看你家在几环?
- 记录 vue-admin-template 中 npm install 错误解决办法
- 论文阅读(21 AAAI)Mind-the-Gap Unsupervised Domain Adaptation for Text-Video Retrieval
- 纠正你读错的电脑英文词汇--(2)
- 通过WiFi进行adb调试(免去数据线烦扰)
热门文章
- 二级MYSQL的语法整理_MySQL语法整理
- hash地址_一致性Hash在负载均衡中的应用
- 阿帕奇跨域_阿帕奇光束
- apache ignite_使用Spring Data的Apache Ignite
- lucene 查询示例_Lucene查询(搜索)语法示例
- drill apache_如何使用Apache Drill分析高度动态的数据集
- Apache Kafka消费者再平衡
- javafx swing_JavaFX技巧9:请勿混用Swing / JavaFX
- apache flume_Flume:使用Apache Flume收集客户产品搜索点击数据
- Eclipse GlassFish 5.1就在这里!