servlet cdi analysis
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的更多相关文章
- Servlet CDI example analysis
上下文和依赖注入(CDI)使您的对象能够自动为它们提供依赖项,而不是创建它们或将它们作为参数接收.CDI还为您管理这些依赖项的生命周期. 例如,考虑以下servlet: @WebServlet(&qu ...
- Servlet CDI Example Analysis
上下文和依赖注入(CDI)使您的对象能够自动为它们提供依赖项,而不是创建它们或将它们作为参数接收.CDI还为您管理这些依赖项的生命周期. 例如,来看下面这个servlet: @WebServlet(& ...
- Servlet CDI 例子分析
@WebServlet("/cdiservlet") //以@WebServlet注释开头,注释指定相对于上下文根的URL模式,即在根目录下使用/cdiservlet来访问 pub ...
- servlet injection analysis
一. Spring不能通过注解向Servlet中注入实例的原理 想了解此问题的原理,就要了解tomcat启动后 servlet和spring的加载顺讯. 1. tomcat启动后先加载web.xml ...
- servlet cdi注入
@WebServlet("/cdiservlet")//url映射,即@WebServlet告诉容器,如果请求的URL是"/cdiservlet",则由NewS ...
- Servlet基本知识
Servlet基本知识 1.IDEA创建第一个Servlet程序xing 这里说明如何使用 IDEA Ultimate 2020.1.3版本来新建第一个web程序.参考 MoonChasing 1.1 ...
- Cognos报表打开参数
查看门户页面 http://localhost:9300/p2pd/servlet/dispatch? b_action=xts.run &m=portal/cc.xts &gohom ...
- Analysis CDI
CDI是一组服务,它们一起使用,使开发人员可以轻松地在Web应用程序中使用企业bean和JavaServer Faces技术.CDI设计用于有状态对象,还有许多更广泛的用途,允许开发人员以松散耦合但类 ...
- Analysis servlet
@WebServlet("/cdiservlet") public class NewServlet extends HttpServlet { private Message m ...
随机推荐
- VersionControl:git
关于VersionControl VersionControl即版本控制,版本控制是一种记录文件或文件集随时间变化的系统,以便以后可以查阅调用特定版本,版本控制系统不仅可以应用于软件源代码的文本文件, ...
- wishhack 玩法概览
抢流量玩法 超级店长玩法 https://www.wishhack.com/article/50.html https://www.wishhack.com/article/43.html
- CCF关于NOI省选申诉的说明
NOI省选由各省根据NOI条例及CCF省选规定组织省内选拔,各省组织单位对其省选过程和结果负责 对省选的申诉首先提交至NOI省组织单位,NOI省组织单位必须先给出处理意见.对于NOI省组织单位不能决定 ...
- 为DBNavigator的按钮加中文
转自:http://hi.baidu.com/debiansir/item/0699f5b6bb4d99f063388e71 /*Delphi中数据库控件DBNavigator使用起来不错,但是按钮上 ...
- tensorFlow(三)逻辑回归
tensorFlow 基础见前博客 逻辑回归广泛应用在各类分类,回归任务中.本实验介绍逻辑回归在 TensorFlow 上的实现 理论知识回顾 逻辑回归的主要公式罗列如下: 激活函数(activati ...
- 多任务Forth系统内存布局
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- h5手机点击返回键,刷新页面
在js中,加上一下代码: window.onpageshow = function(event) {if (event.persisted) {window.location.reload();}};
- TensorFlow 神经网络相关函数
TensorFlow 激活函数 激活操作提供用于神经网络的不同类型的非线性.这些包括平滑的非线性(sigmoid,tanh,elu,softplus,和softsign),连续的,但不是到处可微函数( ...
- javascript性能优化之避免二次评估
Javascript与许多脚本语言一样,允许你在程序中获取一个包含代码的字符串然后运行它,有多种方式可以实现在一串Javascript代码并运行它. 代码示例如下 <html> <h ...
- locate语法
1.命令格式:locate [参数] [文件] 2.命令功能:locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的 ...