一.EL(SPEL) EL 1.概述:EL是JSP内置的表达式语言,用以访问页面的上下文以及不同作用域中的对象 ,取得对象属性的值,或执行简单的运算或判断操作.EL在得到某个数据时,会自动进行数据类型的转换.使用EL表达式输出数据时,如果有则输出数据,如果为null则什么也不输出.2.语法:a.EL表达式总是放在{}中,而且前边有一个$作为前缀:${}b.获取对象的属性值可以直接通过“对象.属性名”:${user.name}; 注意:这里的属性名是get和set方法对应的属性值,并不是对象中的变…
概述 如果说EJB,JPA是之前JEE(JEE5及JEE5之前)中里程碑式的规范,那么在JEE6,JEE7中CDI可以与之媲美,CDI(Contexts and Dependency Injection),即上下文依赖注入,它是众多JEE规范中的一个,从JEE6开始CDI正式成为JEE规范,但CDI相关的概念不是新的,依赖注入的概念已经存在了许多年,相关的流行框架包括Spring,Google Guice等.目前CDI规范的实现主要有 JBoss Weld,Apache OpenWebBeans…
基本的CDI的功能: 类型安全:CDI使用Java类型来解析注入,而不是通过(字符串)名称注入对象.当类型不足时, 可以使用限定符 注释.这允许编译器轻松检测错误,并提供简单的重构. POJO:几乎每个Java对象都可以由CDI注入!这包括EJB,JNDI资源,持久性单元和持久性上下文,以及之前由工厂方法创建的任何对象. 可扩展性:每个CDI容器都可以通过使用便携式"扩展"来增强其功能.属性"portable"意味着无论哪个供应商,这些CDI Extensions都…
1.Decorators装饰器综述 拦截器是一种强大的方法在应用程序捕捉运行方法和解耦.拦截器可以拦截任何java类型的调用.  这使得拦截器适合解决事务管理,安全性,以及日记记录.  本质上说,拦截器并不知道他们截获的实际语义事件.因此,拦截器并不是很适合和系统的业务挂钩. 而本章的装饰器,则又不一样.  装饰器只截取调用某个Java接口,因此获知这个接口的所有语义连接.  decorator直接实现与业务语义操作,这也意味着装饰没有拦截器的通用性.  拦截器和修饰符,尽管在很多方面相似,是互…
一.EL/SpEL 1.EL语言(CDI与表达式语言(EL)集成,允许在JavaServer Faces页面或JavaServer Pages页面中直接使用任何组件) 1)概述:EL是JSP内置的表达式语言,用以访问页面的上下文以及不同作用域中的对象 ,取得对象属性的值,或执行简单的运算或判断操作.EL在得到某个数据时,会自动进行数据类型的转换.使用EL表达式输出数据时,如果有则输出数据,如果为null则什么也不输出. 2)语法:a.EL表达式总是放在{}中,而且前边有一个$作为前缀:${}b.…
CDI(Contexts And Dependency Injection)是JavaEE 6标准中一个规范,将依赖注入IOC/DI上升到容器级别, 它提供了Java EE平台上服务注入的组件管理核心,简化应该是CDI的目标,让一切都可以被注解被注入. Contexts概念和我们之前在DCI架构中 讨论的业务场景不一样,包含有容器技术架构场景的意思,场景包括四种:request (event), session, application, page,而SEAM框架拓展了两个 conversati…
Spring expression language (SpEL) supports many functionality, and you can test those expression features with this special "ExpressionParser" interface. Here's two code snippets, show the basic usage of using Spring EL. SpEL to evaluate the lit…
概述 如果说EJB,JPA是之前JEE(JEE5及JEE5之前)中里程碑式的规范,那么在JEE6,JEE7中CDI可以与之媲美,CDI(Contexts and Dependency Injection),即上下文依赖注入,它是众多JEE规范中的一个,从JEE6开始CDI正式成为JEE规范,但CDI相关的概念不是新的,依赖注入的概念已经存在了许多年,相关的流行框架包括Spring,Google Guice等.目前CDI规范的实现主要有 JBoss Weld,Apache OpenWebBeans…
概念: 是一个支持运行时查询和操作的对象图的强大的表达式语言. 语法类似于EL:SpEl使用#{ ...}作为定界符,所有在大括号中的 字符都将被认为是SpEl SpEl为bean的属性进行动态赋值提供了便利 通过SpEl可以实现: --通过bean的id对bean进行引用 --调用方法以及引用对象中的属性 --计算表达式的值 --正则表达式的匹配 <bean id="address" class="com.tanlei.spring.SpEl.Address"…
Producer拦截器(interceptor)是个相当新的功能,它和consumer端interceptor是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑. 对于producer而言,interceptor使得用户在消息发送前以及producer回调逻辑前有机会对消息做一些定制化需求,比如修改消息等.同时,producer允许用户指定多个interceptor按序作用于同一条消息从而形成一个拦截链(interceptor chain).Intercetpor…