找不到自定义创建的Slf4j注释的对象

时间:2019-04-06 18:43:50

标签: java annotations slf4j lombok intellij-lombok-plugin

我想通过创建自定义注释来消除编写static final Logger logger = LoggerFactory.getLogger(AbstractConsumerConfig.class);的重复性。类级的@Log返回Logger对象,该对象可用于记录目的。

我能够实现类变量上方的注释,例如- @Log private Logger LOGGER;,但我想在课堂上这样做,这样我什至不需要写那么多。

对于类级别的注释-Log.java

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Log {

}

LoggerUtil.java

import com.fiberlink.util.annotation.Log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static java.util.Objects.requireNonNull;


public class LoggerUtil {
    public static Logger getLoggerObject(Object object) {
        Class<?> objectClass = requireNonNull(object).getClass();
        if(objectClass.isAnnotationPresent(Log.class)) {
            final Logger LOGGER = LoggerFactory.getLogger(objectClass);
            return  LOGGER;
        }
        return  null;
    }
}

由于未在类中定义LOGGER变量(想通过注释获取它),我们将收到一个无法解析符号的错误。 我正在使用IntelliJ IDEA,但我想我需要创建一个插件来识别此批注,但我不知道从哪里开始。

1 个答案:

答案 0 :(得分:0)

使用Lombok。当然,除非您按小时付费,在这种情况下,请重新发明轮子。