@ -13,10 +13,23 @@
@@ -13,10 +13,23 @@
* See the License for the specific language governing permissions and
* limitations under the License .
* /
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 .
* { @link MutableAnnotationUtils # createMutableAnnotation ( Class ) } creates a proxy based on
* two interfaces : this one , and whatever annotation is currently being parsed . The
@ -26,6 +39,9 @@ package org.springframework.context.annotation.support;
@@ -26,6 +39,9 @@ package org.springframework.context.annotation.support;
* not to use this annotation outside this package .
*
* @author Chris Beams
* @see MutableAnnotationUtils
* @see MutableAnnotationVisitor
* @see MutableAnnotationInvocationHandler
* /
public interface MutableAnnotation {