@WebServlet("/cdiservlet") //以@WebServlet注释开头,注释指定相对于上下文根的URL模式,即在根目录下使用/cdiservlet来访问 public class NewServlet extends HttpServlet { //创建一个NewServlet类继承的是HttpServlet类 private Message message; @Override public void init() { //该servlet重写该init方法 message = new MessageB(); //对message初始化 } @Override public void doGet(HttpServletRequest request, HttpServletResponse response) //该servlet重写该doGet方法,实现GET HTTP方法 throws IOException { //抛出可能出现IO异常 response.getWriter().write(message.get()); //捕获可能发生的异常 } }
使用CDI后的实例
servlet可以声明它的依赖Message
实例和由CDI运行时自动注射
@WebServlet("/cdiservlet") //以@WebServlet注释开头,注释指定相对于上下文根的URL模式,即在根目录下使用/cdiserlvlet来访问 public class NewServlet extends HttpServlet { @Inject private Message message; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) //该servlet重写该doGet方法 throws IOException { //抛出可能出现IO异常 response.getWriter().write(message.get()); //捕获可能发生的异常 } }
CDI实现运行时查找类Message
界面,找到了MessageB
类,创建一个新的实例, 在运行时注入到servlet。 管理的生命周期 新实例,CDI运行时需要知道的范围 实例。 在这个例子中,servlet只需要实例 处理HTTP请求; 实例可以被垃圾收集。