【问题标题】:Purpose of having custom annotations具有自定义注释的目的
【发布时间】:2014-04-25 13:36:20
【问题描述】:

一些使用自定义注解的项目如下。例如如下。请解释一下

  1. 我应该何时决定使用自定义注释。
  2. @Target & @Retention 注解属性的作用
  3. 使用 import java.lang.annotation.Target 和 import java.lang.annotation.Retention 或 hibernate 特定的注解是否更好,如下所示

    @实体 @Table(name = "creditCard")

    @CreditCardEntity

    public class CreditCard implements java.io.Serializable {}
    
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    import org.hibernate.validator.ValidatorClass;
    
    @Target( { ElementType.TYPE })
    @Retention(RetentionPolicy.RUNTIME)
    public @interface CreditCardEntity {}
    
     }
    

【问题讨论】:

  • 你读过这个wikipedia article吗? “@Target - 标记另一个注解以限制该注解可以应用于哪种 Java 元素”和“@Retention - 指定如何存储标记的注解——无论是仅在代码中、编译到类中还是在运行时通过反射可用。”

标签: java spring hibernate


【解决方案1】:

如果您计划在代码中的多个位置同时使用相同的注解,那么使用自定义注解是一个好主意。例如,在您的情况下,如果您将在另一个地方一起使用@Entity @Table(name = "creditCard"),最好将它们结合在一个注释下,例如CreditCardEntity 注释,但如果这是您将使用这两个的唯一地方注释在一起(在这种情况下更有可能),没有必要为它制作自定义注释。

【讨论】:

  • 为什么你会想要有 2 个具有相同名称的表的实体类?不是真正可行的例子。
  • @Vaelyr 如果您仔细阅读我的回答,我提到在此示例中它不符合逻辑,如下所示:但如果这是您将这两个注释一起使用的唯一地方(这更有可能在这种情况下),没有必要为它做一个自定义注释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
  • 2017-03-14
  • 2023-04-01
相关资源
最近更新 更多