我嘗試CDI的@New註釋是否工作 - 看起來沒有。@新註解不起作用
在我的應用程序創建這樣的類:
package pl.piotrek;
import java.util.Date;
import javax.enterprise.inject.Produces;
import javax.enterprise.context.SessionScoped;
public class DateFactory {
public @Produces @SessionScoped Date produceDate() {
return new Date((long)(Math.random() * 2000000000000L));
}
}
然後我嘗試使用它在我的servlet:
package pl.piotrek;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.annotation.WebServlet;
import java.util.Date;
import javax.inject.Inject;
import javax.enterprise.inject.New;
@WebServlet("/HelloWorld")
public class MyServlet extends HttpServlet {
@New @Inject
private Date d1;
@New @Inject
private Date d2;
@New @Inject
private Date d3;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
PrintWriter writer = resp.getWriter();
writer.println(d1 + "\n" + d2 + "\n" + d3);
writer.close();
}
}
我預計該servlet將打印出三種不同的日期 - 我註解使用@New註釋進行注射 - 但它會打印三個相同的日期,如下所示:
Sat Feb 07 07:53:36 CET 2015
Sat Feb 07 07:53:36 CET 2015
Sat Feb 07 07:53:36 CET 2015
爲什麼?
返回的日期是不是一個隨機的事實一個(在製片人編碼),但問題的確切日期似乎並不奇怪巧合? – 2015-02-07 13:43:52