1 package de.halbekunst.juplo.cachecontrol.annotations;
4 import java.lang.annotation.ElementType;
5 import java.lang.annotation.Retention;
6 import java.lang.annotation.RetentionPolicy;
7 import java.lang.annotation.Target;
11 * Marker-Annotation für Handler (i.A. eine Impelementierung von
12 * {@link Controller}), deren Antworten vom {@link CachingInterceptor} mit
13 * HTTP/1.1-Caching-Header nach
14 * {@linkplain http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html RFC 2616}
15 * dekoriert werden sollen.
17 * Wenn der Parameter <code>eager</code> auf <code>true</code> gesetzt wird,
18 * ermittelt der {@link CachingInterceptor} die Cache-Parameter über die
19 * annotierten Methoden vorab.
20 * <strong>Achtung:</strong>
21 * Dies bedeutet, dass die annotierten Methoden aufgerufen werden <em>bevor</em>
22 * die eigentliche Verarbeitungs-Routine der markierten Klasse aufgerufen wird!
23 * Wenn sich dabei ergiebt, dass die Antwort nicht erneut ausgeliefert werden
24 * muss, wird die eigentliche Verarbeitungs-Routine <em>gar nicht aufgerufen</em>.
26 * Wenn der Parameter <code>eager</code> nicht gesetzt ist (oder explizit auf
27 * <code>false</code> gesetzt wurde), kapselt der {@link CachingInterceptor}
28 * den Request und den Ausgabestrom für den Response-Body und trifft die
29 * Entscheidung über die zu ergänzenden Header, wenn der Status des
30 * {@link HttpServletResponse} gesetzt oder mit dem Schreiben des Response-Body
41 @Retention(RetentionPolicy.RUNTIME)
42 @Target(ElementType.TYPE)
43 public @interface Cacheable {
44 boolean eager() default false;