Skip to content

Document Spring Annotation Programming Model in the Wiki [SPR-11515] #16140

Closed
@spring-projects-issues

Description

@spring-projects-issues

Sam Brannen opened SPR-11515 and commented

Status Quo

Over the past several releases, the Spring Framework has continually enhanced its support for meta-annotations and custom composed annotations, potentially with meta-annotation attribute overrides. However, the programming model is not clearly documented in the reference manual. Furthermore, new features for annotation attribute aliases and meta-annotation support have been introduced in 4.2, and these will need to be clearly documented as well.


Deliverables

In the Spring Framework Wiki, introduce a new page covering all features of Spring's support for meta-annotations, including but not limited to the following.

  1. Document the general search algorithm(s) for annotations and meta-annotations on classes, interfaces, methods, and annotations.
  2. Document support for annotation attribute aliases configured via @AliasFor.
  3. Document support for composed annotations.
  4. Document support for meta-annotation attribute overrides in composed annotations.
    • Document the algorithm used when looking up attributes, specifically explaining:
    • What happens if an attribute and one of its aliases are declared somewhere within the annotation hierarchy? Which one takes precedence?
    • In general, how are conflicts involving annotation attributes resolved?
  5. Document the special handling of the value attribute for @Component and @Qualifier, or cross reference existing documentation as appropriate.

Annotations Using @AliasFor as of Spring Framework 4.2

  • org.springframework.cache.annotation.Cacheable
  • org.springframework.cache.annotation.CacheEvict
  • org.springframework.cache.annotation.CachePut
  • org.springframework.context.annotation.ComponentScan.Filter
  • org.springframework.context.annotation.ComponentScan
  • org.springframework.context.annotation.ImportResource
  • org.springframework.context.annotation.Scope
  • org.springframework.context.event.EventListener
  • org.springframework.jmx.export.annotation.ManagedResource
  • org.springframework.messaging.handler.annotation.Header
  • org.springframework.messaging.handler.annotation.Payload
  • org.springframework.messaging.simp.annotation.SendToUser
  • org.springframework.test.context.ActiveProfiles
  • org.springframework.test.context.ContextConfiguration
  • org.springframework.test.context.jdbc.Sql
  • org.springframework.test.context.TestExecutionListeners
  • org.springframework.test.context.TestPropertySource
  • org.springframework.transaction.annotation.Transactional
  • org.springframework.transaction.event.TransactionalEventListener
  • org.springframework.web.bind.annotation.ControllerAdvice
  • org.springframework.web.bind.annotation.CookieValue
  • org.springframework.web.bind.annotation.CrossOrigin
  • org.springframework.web.bind.annotation.MatrixVariable
  • org.springframework.web.bind.annotation.RequestHeader
  • org.springframework.web.bind.annotation.RequestMapping
  • org.springframework.web.bind.annotation.RequestParam
  • org.springframework.web.bind.annotation.RequestPart
  • org.springframework.web.bind.annotation.ResponseStatus
  • org.springframework.web.bind.annotation.SessionAttributes
  • org.springframework.web.portlet.bind.annotation.ActionMapping
  • org.springframework.web.portlet.bind.annotation.RenderMapping

Affects: 4.0 GA

Issue Links:

0 votes, 6 watchers

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions