-
Notifications
You must be signed in to change notification settings - Fork 38.5k
Introduce predefined composed annotations in core Spring [SPR-13442] #18022
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Marcel Overdijk commented I especially like the |
Sam Brannen commented Hi Marcel Overdijk, Glad you like them! Keep in mind that it's easy to implement these composed annotations on your own project, even if we don't backport them to 4.2.x. Actually, that's how this whole thing started. I created So if you want to use one of the proposed annotations, you can always just copy-n-paste the code into your own project or... since yesterday, add a dependency on Regards, Sam |
Marcel Overdijk commented Sure, can easily copy them, or indeed as I have done yesterday added the dependency. |
Sam Brannen commented
True... but Spring Composed is still a playground for the time being while we work out what kinds of annotations (and default attribute values) make sense and while we gather input from the community on what types of predefined composed annotations to support. So if you have further ideas, please let us know. We are currently not planning on backporting such annotations to 4.2.x; however, if there is enough interest from the community we will take it into consideration. |
Juergen Hoeller commented From my perspective, the main problem is that there are almost unlimited combinations possible, creating more confusion than clarity for the casual observer. However, the main benefit of selecting composed annotations into Spring Framework proper is guidance, with a smaller set of annotations delivering a much better job in that respect, so it's a tough balance to find. For that kind of effort, the 4.3 timeframe is ideal... and 4.3 RC1 is planned for early March, so it's not far away at all. If there is obvious low-hanging fruit in specific corners of the framework, we may add an annotation or two right away in the 4.2.x line. However, for mainstream usage such as request mappings or bean scoping, we'll have to leave some room for further discussions, in particular about naming and about the specific default values. We only have one shot here: once an annotation is official, we have to live with its design; even the slightest variation would require yet another new annotation. Juergen |
Tomoyuki Ikeya commented In my opinion, |
Juergen Hoeller commented On a related note to scope annotation naming (which I agree with), we should also have our new web scope annotations default to proxy mode Juergen |
Sam Brannen commented See #18565 for common composed annotations for |
Sam Brannen commented FYI: anyone interested in the currently proposed composed annotations for |
Sam Brannen commented See #18566 for common composed annotations for web scopes. |
Sam Brannen commented FYI: anyone interested in the currently proposed composed annotations for web scopes can take a look at the following pull request: |
Sam Brannen commented Resolving this issue as Complete since #18565 and #18566 cover all composed annotations currently targeted for inclusion in Spring Framework 4.3. |
Tim commented I don't agree with the intention of this. Features should not be introduced into a framework just to take advantage of a new capability. |
Sam Brannen opened SPR-13442 and commented
Status Quo
Spring Framework 4.2 introduced support for explicit attribute overrides in meta-annotations via the new
@AliasFor
annotation. This new support makes it possible to include a set of predefined composed annotations in several modules of the Spring Framework.Spring Composed
For the time being, the Spring team is using the
spring-composed
project as a playground for trying out new ideas with regard to what kinds of predefined composed annotations Spring should support.Feedback is welcome!
Candidates for Inclusion
The following candidates are for inclusion in the Spring Framework.
@GetMapping
,@PostMapping
,@PutMapping
,@DeleteMapping
, &@PatchMapping
, for standard Spring MVC controller methods@ApplicationScope
,@SessionScope
,@RequestScope
Possible Candidates for Inclusion
The following candidates are possible for inclusion in the Spring Framework based on early feedback.
@HeadMapping
,@OptionsMapping
, &@TraceMapping
for standard Spring MVC controller methods@GetResource
,@PostResource
,@PutResource
,@DeleteResource
etc. for generic REST-based Spring MVC controller methods with preconfigured response statuses@TransactionalService
,@TransactionalComponent
,@TransactionalRepository
@SingletonScope
,@PrototypeScope
,@GlobalSessionScope
Unlikely Candidates for Inclusion
The following candidates are unlikely for inclusion in the Spring Framework based on early feedback.
@GetJson
,@GetXml
, etc. for opinionated REST-based Spring MVC controller methods@TransactionalController
,@TransactionalRestController
Deliverables
Affects: 4.2 GA
Issue Links:
@RequestMapping
annotations@ResponseStatus
as a merged composed annotation@RequestMapping
@CrossOrigin
as a merged composed annotation@Cache
* as merged composed annotations7 votes, 17 watchers
The text was updated successfully, but these errors were encountered: