Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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 - Fatal编程技术网

Java 是否能够从注释中回调方法?

Java 是否能够从注释中回调方法?,java,Java,我试图在方法上使用注释@FeatureDependent,以表示该方法需要启用某些东西才能工作。我想知道是否有可能在每次调用带有@FeatureDependent的方法时调用一个名为的方法,该方法将检查是否满足要调用的方法的标准。听起来像是您在描述。此技术允许您解决“交叉”问题,如日志记录、安全性和事务管理等任务,这些任务往往会以相同的方式影响许多方法。您的用例听起来很适合AOP AOP有两种常见的方法。第一种机制是在容器(例如Spring容器)中创建对象。然后,容器可以扫描类,检测任何需要应用

我试图在方法上使用注释
@FeatureDependent
,以表示该方法需要启用某些东西才能工作。我想知道是否有可能在每次调用带有
@FeatureDependent
的方法时调用一个名为的方法,该方法将检查是否满足要调用的方法的标准。

听起来像是您在描述。此技术允许您解决“交叉”问题,如日志记录、安全性和事务管理等任务,这些任务往往会以相同的方式影响许多方法。您的用例听起来很适合AOP

AOP有两种常见的方法。第一种机制是在容器(例如Spring容器)中创建对象。然后,容器可以扫描类,检测任何需要应用的建议,并通过动态代理应用建议(GoogleSpring和AOP是一个很好的起点)。缺点是您的组件将需要由容器构造,因此对于较大的组件是有意义的

第二种方法是额外的编译步骤(有时在编译时完成,有时作为单独的编译阶段完成,有时由编织类装入器完成),以连接其他方法。这通常被称为“编织”,AspectJ是一个常见的库

这两种方法都允许您基于对象上的注释应用“建议”(方法调用前后运行的代码)。更详细地解释两者都超出了SO回答的范围,但我希望它能让你开始

我要警告的是,AOP已经因为使应用程序的流程复杂化、易于理解和调试而名声大噪。因此,它最近的受欢迎程度有所下降


另一种方法是对所有请求和工作流使用一个瓶颈,在这里您可以应用各种日志记录和安全机制。这种方法更容易理解,涉及的“黑魔法”更少。

有人能调用这些方法吗,还是集中化?如果检查失败,您想做什么?注释可以实现很多功能,但是我们没有足够的信息来帮助您。对不起,任何人都可以调用这些方法。