You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by st...@apache.org on 2013/01/02 08:12:53 UTC
svn commit: r1427689 -
/geronimo/specs/trunk/geronimo-jcdi_1.1_spec/src/main/java/javax/enterprise/inject/New.java
Author: struberg
Date: Wed Jan 2 07:12:53 2013
New Revision: 1427689
URL: http://svn.apache.org/viewvc?rev=1427689&view=rev
Log:
GERONIMO-6182 add documentation for @New
Modified:
geronimo/specs/trunk/geronimo-jcdi_1.1_spec/src/main/java/javax/enterprise/inject/New.java
Modified: geronimo/specs/trunk/geronimo-jcdi_1.1_spec/src/main/java/javax/enterprise/inject/New.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-jcdi_1.1_spec/src/main/java/javax/enterprise/inject/New.java?rev=1427689&r1=1427688&r2=1427689&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-jcdi_1.1_spec/src/main/java/javax/enterprise/inject/New.java (original)
+++ geronimo/specs/trunk/geronimo-jcdi_1.1_spec/src/main/java/javax/enterprise/inject/New.java Wed Jan 2 07:12:53 2013
@@ -37,9 +37,36 @@ import javax.inject.Qualifier;
public @interface New
{
/**
- * May be used to declare which type should be used for injection.
- * This defaults to the type which is defined at the injection point.
- * @return the class of the bean which should be injected
+ * <p>May be used to declare a class which should be used for injection.
+ * This defaults to the type which is defined at the injection point.</p>
+ *
+ * <p>Technically this is a qualifier, but it has a very special handling
+ * defined by the specification. It will create a new Contextual Instance
+ * of the given class by calling the default constructor. The created
+ * Contextual Instance will be treated as being @Dependent to the
+ * instance the injection point belongs to.</p>
+ *
+ * <p>@New also works for creating Contextual Instances of classes which are
+ * <i>not</i> part of a bean archive (BDA, aka a jar with a META-INF/beans.xml).
+ * Note that from a practical point @New is rarely useful. If you don't have
+ * a beans.xml then you will most probably also not have any CDI feature in that class.
+ * and if you otoh do have such a BDA, then you can inject the bean directly anyway.
+ * The only real usage is to inject a new 'dependent' instance of a CDI bean which
+ * has a different scope already defined.
+ *
+ * <p>
+ * Example:
+ * <pre>
+ * @Inject @New SomeClass instance;
+ * </pre>
+ * </p>
+ *
+ * <p><b>Attention:</b> @New only works for InjectionPoints, it is not
+ * possible to resolve a new-bean programatically via
+ * {@link javax.enterprise.inject.spi.BeanManager#getBeans(java.lang.reflect.Type, java.lang.annotation.Annotation...)}
+ * if there was no @New InjectionPoint of that type in the scanned classes.</p>
+ *
+ * @return the class of the bean which should be injected
*/
Class<?> value() default New.class;
}