【问题标题】:Groovy Dependency InjectionGroovy 依赖注入
【发布时间】:2012-07-04 10:16:43
【问题描述】:

我想将一个 Log4j 记录器(或一般情况下的任何类)注入到我所有具有日志属性的类中:

def log

这是在 Grails 中自动完成的。我想在普通的 groovy 应用程序中拥有相同的功能,比如说 src 下的所有 groovy 文件。 Log4j 的特点是,记录器需要知道要记录的类。 (Logger.getLogger(Class clazz))

我怎样才能做到这一点?

【问题讨论】:

    标签: java grails groovy dependency-injection


    【解决方案1】:

    你见过 Groovy 1.8 中的 @Log annotation added 吗?

    【讨论】:

    • 太棒了!我一定错过了。你们在那里真的做得很好!谢谢。
    • 实际上,在撰写本文时,Groovy 2.0 中 log4j 和 slf4j seems 的注释为 broken...
    • 查看了一下,这似乎是一个类路径问题..只要执行脚本时 log4j 在类路径上,注释应该可以正常工作:-D
    【解决方案2】:

    Groovy 使用类上的 @Log4j annotation 对此提供本机支持。这将创建一个 log 字段,指向与所讨论的类同名的 Log4J Logger,即:

    package com.example
    import groovy.util.logging.Log4j
    
    @Log4j
    public class LogExample {
    }
    

    相当于

    package com.example
    public class LogExample {
      private static final Logger log = Logger.getLogger(LogExample.class)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 2014-06-12
      • 2013-04-30
      • 2021-11-19
      相关资源
      最近更新 更多