背景今天要在kafka消费者中记录日志,我们采用了自定义评论Spring AOP。 为了记录groupId,groupId是从配置中心读取的,因此需要支持$占位符语法的自定义注释。
解决方案向片类Aspect注入全局环境对象,环境只需获取所有配置并调用环境对象的resolvePlaceholders方法
示例代码@ component @ aspect @ slf4j (topic=' elk _ kfk _ log _ msg ' ) publicclasskafkaconsumerlogaspect { privatestation @ autowiredprivateenvironmentenvironment; @pointcut('@annotation ) ) com.yumc.ycms.QY.consumer.annotation.consumer log ) ) public void consumerLog ) @ around (' @ annotation (consumer log ) ) publicobjectoperationlogrecord ) proceedingjoinpointpjp,consumer log consumer logrer //解析占位符string groupid=environment.resolve placeholder s (consumer log.groupid (); do something . }其中consumerLog是自定义注释,groupId是注释中的属性,以这种方式使用@ consumer log (groupid=' $ { groupid } ' )