【问题标题】:How to hide annotated fields in Spring Boot using custom annotations?如何使用自定义注释在 Spring Boot 中隐藏带注释的字段?
【发布时间】:2019-02-22 22:48:30
【问题描述】:

我创建了添加到我的 Java 类字段的自定义注释。 当我创建该类的对象时,我希望我的自定义注释字段具有值:null 或“”或“customAnnotation” 例如:

@Entity
public class User implements Serializable{

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "address_id")
private Long id;

@MyCustomAnnotation
private String firstname;

private String lastname;
....

当我在项目的某处创建对象时:

User user = new User();
user.setFirstname("John");
user.setLastname("Smith");

我希望它是:

String firstname = user.getFirstname() // firstname is "" or null
String lastname = user.getLastname()   // lastname is "Smith"

如何创建方法来查找项目中所有类中的所有注释字段并对所有类执行相同操作?这个方法存放在哪里? 我正在开发 Maven,Spring Boot 项目。

【问题讨论】:

    标签: java maven spring-boot annotations aop


    【解决方案1】:

    在您的代码中的某个时刻,您将不得不实现如下内容:

    Class<User> obj = User.class;
    
    if (obj.isAnnotationPresent(MyCustomAnnotation.class)) {
      //your business logic
    }
    

    此类事情的明智之处在于创建用户时、获取用户时(无论出于何种原因使用注释)或定时例程中的间隔。

    编辑:参见本教程:https://www.mkyong.com/java/java-custom-annotations-example/

    【讨论】:

    • 我有 100 个地方可以使用自定义注释创建和获取用户和其他类。我想在一个地方写一段代码,我会说:遍历我在项目中拥有的模型中的所有类,如果它们在任何字段上有自定义注释,请以某种方式覆盖该字段的设置器以设置“ “ 每次。那可能吗?以及如何做到这一点?
    • 你会在上面的业务逻辑部分调用setter。从哪里打电话是您必须做出的决定。就像我说的那样,这样一个有意义的地方将非常集中在您的软件的用户管理组件中。我不能更具体地缺乏对您的代码的洞察力。 :)
    猜你喜欢
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    相关资源
    最近更新 更多