1

我想为

javax.ws.rs.core.NewCookie(java.lang.String name,
             java.lang.String value,
             java.lang.String path,
             java.lang.String domain,
             java.lang.String comment,
             int maxAge,
             boolean secure)

这样每次的价值都会不同。前段时间我做了一些JEE6,但我的记忆力很差!

例如。我的简单记录器制作人是

@Produces
public Logger produceLogger(final InjectionPoint injectionPoint) {  
    final String injectingClass = injectionPoint.getMember().getDeclaringClass().getName();
    logger.info("creating logger for : " + injectingClass);
    return Logger.getLogger(injectingClass);  
}  

任何帮助表示赞赏

4

1 回答 1

1

如果您能够在没有任何附加参数的情况下在生产者方法中计算唯一值,那么您所要做的就是使用返回值注释方法NewCookie

@Produces NewCookie createCookie() {
  // create cookie and its value  
}

如果您需要根据一些外部参数来创建它,那么这个生产者方法可以像任何其他方法一样具有参数——但是,所有这些都是注入点,并且必须由容器获取。

@Produces NewCookie createCookie(String value) {
  // create cookie with parameter value  
}

现在,原始类型(以及字符串)存在问题,您肯定有其他具有不同含义的相同类型的实例,因此您可以使用特殊类(如MyValue包装字符串)并将其用作注入点或使用自定义注释对其进行注释。

@Produces NewCookie createCookie(@CookieValue String value) {
  // create cookie with parameter value  
}

然后,当然,您再次需要某个产生此注入值的地方。

@Produces @CookieValue String createCookieValue() {
    // create value
}

查看JavaEE 6 教程CDI 规范以获取更多信息。

于 2013-04-09T08:48:51.500 回答