【问题标题】:Spring Meta-AnnotationsSpring 元注释
【发布时间】:2012-02-08 05:50:36
【问题描述】:

有谁知道 Spring JAR以及在哪里可以找到它!)包含 Spring 所谓的“元注释”的功能。正如this 文章所示,这些很酷的“新”(嗯,排序)构造允许这样的代码:

@Service
@Scope("request")
@Transactional(rollbackFor=Exception.class)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyService {
}

@MyService
public class RewardsService {
    …
}

基本上,我有一个目前使用 Spring 的 Swing 应用程序。我有一个突然的需求变更,如果我可以使用这些注释,这将变得非常容易。

所以我只是在寻找最小的、微创的 Spring JAR 可以找到这个功能。如果绝对需要,我可以使用整个 Spring JAR,但这将是一个非常严厉的解决方案。如果 Spring 发布具有更小范围功能的更小的 JAR,那就太好了。

我正在浏览 Maven Repo 并看到 spring-core,其中包含一个名为:

org.springframework.core.annotation

但在查看 API 文档后,它似乎并不是我所需要的……

辅助问题:是否可以将这些元注释用作独立结构,或者我是否必须将它们与例如 Spring DI 或 AOP 一起使用还是 Spring 框架的其他主要部分?

提前致谢!

【问题讨论】:

  • 如果没有对注释执行某些操作的代码,注释将如何工作?注释只是一个注释,元数据,可以被其他代码使用。它自己不做任何事情。

标签: java spring annotations


【解决方案1】:

您想要的注释将与它相关的 jar 一起使用。例如,注释 org.springframework.transaction.annotation.Transactional 将在 spring-transactions 工件中。

Meta-annotations 与常规注解并没有真正的不同,除了 Spring 现在检测注解上的注解而之前没有检测到注解。注释是否“工作”取决于正在寻找它们的内容(在这种情况下是在 Spring 上下文中)。

如需进一步阅读,请参阅 Spring 框架参考中的 Annotation-based container configuration

【讨论】:

  • 感谢开发 - 可能是因为它迟到了,我已经一整天都没有起来,我只是在理解你的回复时遇到了一点麻烦。您是说没有一个地方定义了这些“元注释”,还是您推测它们植根于spring-context 内部的某个地方?再次感谢!
  • 注解本身是在定义它们的任何 jar 中定义的。spring-context 包含使注解工作的框架。我修改了我的答案,以便为您提供有关该主题的进一步阅读。
【解决方案2】:

github上有一个项目试图提供元注释功能。 https://github.com/dblevins/metatypes/

【讨论】:

    猜你喜欢
    • 2014-03-12
    • 1970-01-01
    • 2010-12-29
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    相关资源
    最近更新 更多