我正在尝试在我创建的appender下自动连接SQSFIFOJavaClient。我打印出在Sping Boot main class中定义的bean名称,并且我能够看到SQSFIFOJavaClient bean定义。然而,在下面列出的class中没有自动连接bean。SQSAppender和SQSFIFOJavaClient都在不同的包中,但在添加到component-scan的同一个基本包下。你能告诉我我错过了什么吗?
@Component
@DependsOn("SQSFIFOJavaClient")
public class SQSAppender extends AppenderBase<ILoggingEvent> {
@Autowired
private SQSFIFOJavaClient sqsClient;
我还尝试添加DependsOn注解,但sqsClient仍然显示为null。
3条答案
按热度按时间x7rlezfr1#
Log4j2将通过调用
@PluginFactory
annotated方法(按照this answer)创建appender。您的appender可能不是作为Spring bean创建的,最有可能的是调用了new SQSAppender(...)
,并且没有处理@Autowired
。关于如何实现Spring管理的Log4j2 appender的示例可以在org.springframework.amqp.rabbit.log4j2.AmqpAppender中找到。
30byixjq2#
appender是在spring初始化之前创建的。这是我找到的解决方案:
我的自定义添加器.java:
MyBean.java:
e5nqia273#
其他解决方案:
MyServiceApplicationContext.java:
我的自定义添加器.java: