Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类和方法上的自定义注释_Java_Spring Mvc_Annotations_Customization_Aspectj - Fatal编程技术网

Java 类和方法上的自定义注释

Java 类和方法上的自定义注释,java,spring-mvc,annotations,customization,aspectj,Java,Spring Mvc,Annotations,Customization,Aspectj,我是否可能在类上放置自定义注释,然后强制开发人员在方法上放置注释 假设我有三个自定义注释 @Loggable @MySQLLoggable @CassandraLoggable 当我在类上添加@Loggble注释时,它强制开发人员通过@MySQLLoggable或@CassandraLoggable对其所有方法进行注释 更新我 已编辑 @Loggable // Suppose I put this annotation on class public class Service { @MyS

我是否可能在类上放置自定义注释,然后强制开发人员在方法上放置注释

假设我有三个自定义注释

  • @Loggable
  • @MySQLLoggable
  • @CassandraLoggable
  • 当我在类上添加@Loggble注释时,它强制开发人员通过@MySQLLoggable@CassandraLoggable对其所有方法进行注释

    更新我

    已编辑

    @Loggable // Suppose I put this annotation on class
    public class Service {
    
    
    @MySQLLoggable //eclipse forceful the developer 
                  //to put  @MySQLLoggable or @CassandraLoggable on sayHello()
    public String sayHello() {
        return null;
    }
    
    }
    
    使用@interface

        public @interface foo {
    
        String str();
    
        }
    
    
    
        @foo(str = "str")
        public class myClass{
    
        }
    
    编辑


    抱歉,如果您希望IDE让开发人员使用您的自定义注释,那么您最好阅读您的IDE规范和可能的自定义。如果您希望在以后的执行过程中,如果方法没有注释,您的应用程序将抛出异常,那么您必须使用反射。让我们保存您使用Factory模式创建的对象。因此,在创建它们之前,您可以检查是否所有方法都已注释,如果不是所有方法,则抛出异常。我再次相信你必须运用反思。。这只是一条路

    您可以创建自定义注释并将其放到类中。这不会迫使开发人员在类(myClass)的所有方法上添加另一个注释哦,对不起,我误读了你的问题,不确定我是否仍然正确理解它,但是:public@interface loggable{@loggable1(method)@loggable2(method))String foo();}如果你将它添加到一个类中,你将被迫添加它们。(将它添加到答案中)我注意到你把它标记为Spring MVC)有趣的是,我实际上描述了这个web框架在实例化控制器时是如何处理的。所以,如果您有两个角色,并且希望用户可以使用所有方法,但其中一个只能由管理员调用,那么您可以对控制器和方法进行注释。使用反射查看方法是否属于所需角色后。实际上,如果用户未对已注释类的方法提供@MySQLLoggable/@CassandraLoggable注释,则程序不应编译。如果有示例,请与大家分享?:)你不能这么做!正如我前面所说的,您最好阅读如何定制IDE!因为即使我让它在Eclipse中工作,也没有人限制其他开发人员在Netbeans中打开我的类并超越我的限制。同样,在低级IDE中,只需运行一个编译器,这样我就可以下载另一个编译器并使用它。我相信你想做的是毫无价值的。再次强调,归档的一个机会是强制所有开发人员坚持使用一个IDE,并配置此IDE以执行您想要的操作。但您可能找不到一个允许以这种方式自定义自身的IDE!
        public @interface loggable {
    
        @loggable1(method) @loggable2(method))
        String foo();
    
        }