0

这是我第一次尝试在 java 中编写自定义注释。

我不确定这是否可能,但想在尝试另一种解决方案之前尝试一下。

所以这是场景,我有很多方法可以将数据从应用程序发送到设备。我需要将所有这些数据记录在数据库中。

我想为此创建一个注释,以便我可以在注释中编写代码以将数据记录在数据库中,然后使用此注释注释所有方法。

我可以修改代码以登录数据库,但在这种情况下,我必须进入每种方法并将我的代码放在正确的位置,以便将它们登录到数据库中。

这就是我正在寻找基于注释的方法的原因。

是否有可能我正在寻找或者我要求更多。

任何指针将不胜感激,或者如果有人对我的解决方案有不同的方法,这将是真正有帮助的。

4

2 回答 2

1

与其编写自己的注释并处理它们,不如看看 Spring 提供了什么,例如拦截器:

Spring 中的拦截器与方面?

于 2013-05-07T15:58:17.663 回答
1

您可以尝试以下方法

包注释;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@interface Todo {
    public enum Priority {LOW, MEDIUM, HIGH}
    String logInfo() default "Logging...";
    Priority priority() default Priority.LOW;
}


package annotation;

public class BusinessLogic {
    public BusinessLogic() {
        super();
    }

    public void compltedMethod() {
        System.out.println("This method is complete");
    }    

    @Todo(priority = Todo.Priority.HIGH)
    public void notYetStartedMethod() {
        // No Code Written yet
    }

    @Todo(priority = Todo.Priority.MEDIUM, logInfo = "Inside DAO")
    public void incompleteMethod1() {
        //Some business logic is written
        //But its not complete yet
    }

    @Todo(priority = Todo.Priority.LOW)
    public void incompleteMethod2() {
        //Some business logic is written
        //But its not complete yet
    }
}


package annotation;
import java.lang.reflect.Method;

public class TodoReport {
    public TodoReport() {
        super();
    }

    public static void main(String[] args) {
        Class businessLogicClass = BusinessLogic.class;
        for(Method method : businessLogicClass.getMethods()) {
            Todo todoAnnotation = (Todo)method.getAnnotation(Todo.class);
            if(todoAnnotation != null) {
                System.out.println(" Method Name : " + method.getName());
                System.out.println(" Author : " + todoAnnotation.logInfo());
                System.out.println(" Priority : " + todoAnnotation.priority());
                System.out.println(" --------------------------- ");
            }
        }
    }
}
于 2019-01-18T08:51:38.753 回答