Servlet CDI Analysis

本文介绍了CDI(Contexts and Dependency Injection)的主要特性,包括类型安全的依赖注入、POJO的适用性、良好的可扩展性、方便的拦截器实现、动态扩展能力、事件通知机制以及EL表达式的集成等。通过一个简单的Servlet示例展示了如何使用CDI进行依赖注入。

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()返回的文本

    }

}

转载于:https://www.cnblogs.com/448aml/p/10633193.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值