CDI中最令人兴奋的功能是允许每个人在Java EE平台中编写强大的扩展性功能,甚至于改变其核心本身。这些扩展性功能是可以完全移植到任何支持CDI的环境中。

CDI的一些主要特性

1.类型安全:CDI根据Java类型来注入对象,用以代替之前的根据名称来注入对象。当类型不能充分唯一判断出注入对象时,我们可以使用@Qualifier注解来指定注入。这可以让编译器更容易发现错误,并提供更便捷的重构。

2.POJO:几乎每一个Java对象都可以使用CDI来注入!包括EJB和JNDI的资源、持久化对象和已经实现过的工厂方法的任何对象。

3.可扩展性:每一个CDI容器,我们都能很方便的对其增加扩展性功能,增加的扩展性功能可以运行在每一个CDI容器和无论哪个厂商的J2EE 6 服务器中,这一特性通过精心设计的SPI(服务供应接口)得以实现,并成为JSR-299规范的一部分。

4.拦截器:它可以很容易的实现你自己的拦截器。因为JSR-299提供了很便捷的方式,他们现在也可以运行在每一个CDI容器和 J2EE 6 服务器中。这是通过指定一个实现了一部分JSR-299的SPI(服务提供接口)来实现的。

5.可修饰性:它允许动态的扩展已存在的接口实现和代码切面。

6.事件:CDI指定了一个低耦合的类型安全机制来发送和接受事件。

7.集成EL表达式:EL 2.2 具有很强的功能和高度的灵活性,CDI提供了对它的插件式支持。

@WebServlet("/cdiservlet")//url映射

public class NewServlet extends HttpServlet {//声明一个NewServlet类 并继承HttpServlet

@Inject private Message message;//表示运行时将动态注入(实例化)一个Message

@Override //重写父类doGet()方法

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws IOException {

response.getWriter().write(message.get());//带文本格式打印输出message.get()返回的文本

}

}

servlet cdi analysis的更多相关文章

  1. Servlet CDI example analysis

    上下文和依赖注入(CDI)使您的对象能够自动为它们提供依赖项,而不是创建它们或将它们作为参数接收.CDI还为您管理这些依赖项的生命周期. 例如,考虑以下servlet: @WebServlet(&qu ...

  2. Servlet CDI Example Analysis

    上下文和依赖注入(CDI)使您的对象能够自动为它们提供依赖项,而不是创建它们或将它们作为参数接收.CDI还为您管理这些依赖项的生命周期. 例如,来看下面这个servlet: @WebServlet(& ...

  3. Servlet CDI 例子分析

    @WebServlet("/cdiservlet") //以@WebServlet注释开头,注释指定相对于上下文根的URL模式,即在根目录下使用/cdiservlet来访问 pub ...

  4. servlet injection analysis

    一. Spring不能通过注解向Servlet中注入实例的原理 想了解此问题的原理,就要了解tomcat启动后 servlet和spring的加载顺讯. 1.  tomcat启动后先加载web.xml ...

  5. servlet cdi注入

    @WebServlet("/cdiservlet")//url映射,即@WebServlet告诉容器,如果请求的URL是"/cdiservlet",则由NewS ...

  6. Servlet基本知识

    Servlet基本知识 1.IDEA创建第一个Servlet程序xing 这里说明如何使用 IDEA Ultimate 2020.1.3版本来新建第一个web程序.参考 MoonChasing 1.1 ...

  7. Cognos报表打开参数

    查看门户页面 http://localhost:9300/p2pd/servlet/dispatch? b_action=xts.run &m=portal/cc.xts &gohom ...

  8. Analysis CDI

    CDI是一组服务,它们一起使用,使开发人员可以轻松地在Web应用程序中使用企业bean和JavaServer Faces技术.CDI设计用于有状态对象,还有许多更广泛的用途,允许开发人员以松散耦合但类 ...

  9. Analysis servlet

    @WebServlet("/cdiservlet") public class NewServlet extends HttpServlet { private Message m ...

随机推荐

  1. CI集成 mesos 资源分配的思考, 待续

    读了mesos的论文(https://people.eecs.berkeley.edu/~alig/papers/mesos.pdf ),感觉应用在 CI 上的资源管理很赞,能够解决 jenkins在 ...

  2. mvn dependency:tree的用法

    一.参考文档 https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-t ...

  3. AVL平衡二叉树实现

    #include<stdio.h> #include<stdlib.h> #define TRUE 1 #define FALSE 0 #define EH 0 #define ...

  4. hadoop之安装

    在Linux环境下安装Hadoop:    一.安装环境 硬件:虚拟机 操作系统:Centos 6.4 64位 IP:192.168.153.130主机名:imooc安装用户:root        ...

  5. python之路--面向对象(三)

    一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象.由于Python中一切都是类,所以 ...

  6. spring boot 项目插入数据后,返回数据库自增主键

    在对应的实体上添加@GeneratedValue(generator = "JDBC"),如下所示 @GeneratedValue(generator = "JDBC&q ...

  7. Android开发 ---构建对话框Builder对象,消息提示框、列表对话框、单选提示框、多选提示框、日期/时间对话框、进度条对话框、自定义对话框、投影

    效果图: 1.activity_main.xml 描述: a.定义了一个消息提示框按钮 点击按钮弹出消息 b.定义了一个选择城市的输入框 点击按钮选择城市 c.定义了一个单选提示框按钮 点击按钮选择某 ...

  8. L333 Should You Listen to Music While You Work?

    Should You Listen to Music While You Work? "Whistle while you work" is classic advice, str ...

  9. [Ajax] 如何使用Ajax传递多个复选框的值

    HTML+JavaScript代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  10. setfacl语法

    1.setfacl的用途setfacl命令可以用来细分linux下的文件权限. chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限. 换句话说 ...