问题
lombok一直用起来很爽,特别是使用lombok+mybatis-plus的脚手架后,开发效率非常高,今天在开发过程中突然发现使用了@Slf4j
注解后在类中无法通过log
调用日志打印方法。
现象如图
使用@Slf4j
调用log
方法时提示
此处无法调用log方法
问题分析
- 因为之前导入的包倒错,使用了
groovy.util.logging.Slf4j;
这个包,修改过来之后,重新进行了maven的clean。问题仍然存在,排除包错误的问题 - 因为其他类中都可以调起方法,只有这个刚写了类出现这种问题。所以确定为代码问题,而非配置及插件问题
问题解决
仔细查看代码差异后发现问题代码在于
@Slf4j
@Service
public class WdtTradeOrderSyncServiceImpl implements WdtTradeOrderSyncService
可能点出问题在这里,大家基本已经明白了,这是一个注解的使用顺序带来的坑。
修改后的代码块为
@Service
@Slf4j
public class WdtTradeOrderSyncServiceImpl implements WdtTradeOrderSyncService
原因分析
从问题解决的方法看来,分析可能原因为idea认为@Slf4j比@Service执行优先级高,所以再日志对象调用时没有对应的实例支撑,无法调用方法。
修改后先有类,然后有类中注入日志对象,所以日志可以正常输出。
其他@Slf4j无法使用情况
Idea没有安装lombok插件
如果开发工具没有安装lombok插件,不仅@Slf4无法使用,对应使用@Data的实体类中也会报错,大家经常说的使用lombok就是强X同事的说法就是因为这个,只要项目组有一人用了lombok,其他人都要安装lombok插件,否则代码一片红。
IntelliJ IDEA安装lombok步骤:
File–>Settings–>Plugins–>Marketplace–>搜索lombok
–>install
执行完之后restart即可
Idea没开启annotation processing
如果开发工具没有开启注解enable annotation processing 也会引起注解不生效。
开启annotation processing
步骤
File–>Settings–>Build,Ececution,Deployment–>Compiler–>Annotation Processors–>勾选 Enable annotation processing–>Apply即可