|
|
|
@ -13,10 +13,23 @@ |
|
|
|
* See the License for the specific language governing permissions and |
|
|
|
* See the License for the specific language governing permissions and |
|
|
|
* limitations under the License. |
|
|
|
* limitations under the License. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
package org.springframework.context.annotation.support; |
|
|
|
package org.springframework.context.annotation.support; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.springframework.context.annotation.Configuration; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Note: the visibility of this interface would be reduced to package-private save for an |
|
|
|
* Interface used when dynamically creating mutable instances of annotations associated |
|
|
|
|
|
|
|
* with {@link Configuration} class processing. This functionality is necessary given |
|
|
|
|
|
|
|
* that parsing of Configuration classes is done with ASM. Annotation metadata (including |
|
|
|
|
|
|
|
* attributes) is parsed from the classfiles, and instances of those annotations are |
|
|
|
|
|
|
|
* then created using this interface and its associated utilities. The annotation |
|
|
|
|
|
|
|
* instances are attached to the {@link ConfigurationModel} objects at runtime, namely |
|
|
|
|
|
|
|
* {@link BeanMethod}. This approach is better than the alternative of creating fine-grained |
|
|
|
|
|
|
|
* model representations of all annotations and attributes. It is better to simply attach |
|
|
|
|
|
|
|
* annotation instances and read them as needed. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* <p>Note: the visibility of this interface would be reduced to package-private save for an |
|
|
|
* obscure restriction of JDK dynamic proxies. |
|
|
|
* obscure restriction of JDK dynamic proxies. |
|
|
|
* {@link MutableAnnotationUtils#createMutableAnnotation(Class)} creates a proxy based on |
|
|
|
* {@link MutableAnnotationUtils#createMutableAnnotation(Class)} creates a proxy based on |
|
|
|
* two interfaces: this one, and whatever annotation is currently being parsed. The |
|
|
|
* two interfaces: this one, and whatever annotation is currently being parsed. The |
|
|
|
@ -26,6 +39,9 @@ package org.springframework.context.annotation.support; |
|
|
|
* not to use this annotation outside this package. |
|
|
|
* not to use this annotation outside this package. |
|
|
|
* |
|
|
|
* |
|
|
|
* @author Chris Beams |
|
|
|
* @author Chris Beams |
|
|
|
|
|
|
|
* @see MutableAnnotationUtils |
|
|
|
|
|
|
|
* @see MutableAnnotationVisitor |
|
|
|
|
|
|
|
* @see MutableAnnotationInvocationHandler |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public interface MutableAnnotation { |
|
|
|
public interface MutableAnnotation { |
|
|
|
|
|
|
|
|
|
|
|
|