使用Java注释不运行方法

使用Java注释不运行方法,java,annotations,Java,Annotations,我的类中有一个方法仅用于测试目的: private void printOut(String msg, Object value) { System.out.println(msg + value); } 它是System.out.println()的包装方法 所以我希望,通过使用注释,如果我要切换回调试环境,我可以选择在生产环境中不运行此方法,同时仍然保持这些诊断输出就绪 我应该在方法名称的顶部添加哪个注释?一个解决方案是使用AspectJ来实现这一点,因为您可以基于注释控制行为 以

我的类中有一个方法仅用于测试目的:

private void printOut(String msg, Object value)
{
    System.out.println(msg + value);
}
它是System.out.println()的包装方法

所以我希望,通过使用注释,如果我要切换回调试环境,我可以选择在生产环境中不运行此方法,同时仍然保持这些诊断输出就绪


我应该在方法名称的顶部添加哪个注释?

一个解决方案是使用AspectJ来实现这一点,因为您可以基于注释控制行为

以下是有关如何将注释用作连接点的教程:

你可以做的是:

@DebugMessage
private void printOut(String msg, Object value)
{ }
然后,在aspect中,您可以让aspect执行
println
调用


这样,在生产环境中,方面就不包括在内,但是,如果您需要激活这个方面,那么只需将方面添加到生产代码中,就可以进行一些调试。

您应该真正遵循uthark的建议并使用日志框架

这些都是专门为这种情况设计的


做一些“时髦”的事情以后可能会导致问题。

正如我上面所说的,您应该使用日志记录。 以下是在应用程序中使用日志记录的一些好处:

  • 日志记录可以生成有关应用程序操作的详细信息
  • 一旦添加到应用程序中,日志记录就不需要人工干预
  • 应用程序日志可以在以后保存和研究
  • 如果足够详细且格式正确,应用程序日志可以提供审计跟踪
  • 通过捕获可能不会报告给用户的错误,日志记录可以帮助支持人员进行故障排除
  • 通过捕获非常详细和程序员指定的消息,日志可以帮助程序员进行调试
  • 在调试器不可用的情况下,日志记录可以是一种调试工具,在多线程或分布式应用程序中经常会出现这种情况
  • 日志记录保留在应用程序中,可以在应用程序运行时随时使用
了解有关日志记录的更多信息

java中有很多日志框架:

  • 还有几个外观,为各种日志框架提供了抽象:


  • 除非被另一个方法调用,否则该方法不会执行。为什么不使用日志框架,例如Log4j或java.util.Logging@乌瑟克:我对AdvanceJava相当陌生,所以不知道存在某些日志框架/util。。。我一定会去检查的,谢谢!日志框架的存在是为了解决这些问题——在生产中禁用调试消息的打印,而不操纵方面的代码等@uthark——您应该将日志框架作为一个答案,因为根据OPs的具体需求,这可能是比我更好的答案。感谢这篇技巧,我会去那里看看我是否能实现这一点:)这肯定回答了最初的问题,但我认为使用日志框架实际上是解决当前情况的更好的最终解决方案。@Peter Recore-见顶部我的评论,我同意你的意见,这取决于OP的要求。这正是我想要的。我应该好好利用这些设施,而不是重新发明轮子。。。