zoukankan      html  css  js  c++  java
  • Servlet CDI

    上下文和依赖注入(CDI)使您的对象能够自动为它们提供依赖项,而不是创建它们或将它们作为参数接收。CDI还为您管理这些依赖项的生命周期。

    例如,考虑以下servlet:

     1 @WebServlet("/cdiservlet")
     2 public class NewServlet extends HttpServlet {
     3     private Message message;
     4 
     5     @Override
     6     public void init() {
     7         message = new MessageB();
     8     }
     9 
    10     @Override
    11     public void doGet(HttpServletRequest request, HttpServletResponse response)
    12                   throws IOException {
    13         response.getWriter().write(message.get());
    14     }
    15 }

    这个servlet需要一个实现Message接口的对象实例 

    1 public interface Message {
    2     public String get();
    3 }

    servlet创建自己的以下对象的实例:

    1 public class MessageB implements Message {
    2     public MessageB() { }
    3 
    4     @Override
    5     public String get() {
    6         return "message B";
    7     }
    8 }

    使用CDI,这个servlet可以声明它对Message 实例的依赖性,并让它由CDI运行时自动注入。新的servlet代码如下:

     1 @WebServlet("/cdiservlet")
     2 public class NewServlet extends HttpServlet {
     3     @Inject private Message message;
     4 
     5     @Override
     6     public void doGet(HttpServletRequest request, HttpServletResponse response)
     7                   throws IOException {
     8         response.getWriter().write(message.get());
     9     }
    10 }
    CDI运行时查找实现Message 接口的MessageB类,查找类,创建它的新实例,并在运行时将其注入servlet。要管理新实例的生命周期,CDI运行时需要知道实例的范围应该是什么。在此示例中,servlet仅需要实例来处理HTTP请求; 然后可以对实例进行垃圾回收。这是使用javax.enterprise.context.RequestScoped 注释指定的:
    1 @RequestScoped
    2 public class MessageB implements Message { ... }

    对于此servlet的CDI详情请参见官方文档:https://javaee.github.io/tutorial/cdi-basic001.html

  • 相关阅读:
    java注解实例-反射生成sql
    应用服务器集群的伸缩性设计
    高可用的服务
    应用服务器集群Session管理
    应用服务器性能优化 (存储性能优化)
    应用服务器性能优化 (代码优化)
    应用服务器性能优化 (使用集群)
    应用服务器性能优化 (异步操作)
    应用服务器性能优化 (分布式缓存)
    Web前端性能优化(CDN加速及反向代理)
  • 原文地址:https://www.cnblogs.com/TomFord/p/10736063.html
Copyright © 2011-2022 走看看