我正在尝试在我创建的appender下自动装配SQSFIFOJavaClient。我打印出Spring Boot主类中定义的bean名称,我可以看到定义了SQSFIFOJavaClient bean。但是,bean未在下面列出的类中自动装配。 SQSAppender和SQSFIFOJavaClient都在不同的包中,但是在添加到组件扫描的相同基本包下。你能告诉我我在这里缺少什么吗?
@Component
@DependsOn("SQSFIFOJavaClient")
public class SQSAppender extends AppenderBase<ILoggingEvent> {
@Autowired
private SQSFIFOJavaClient sqsClient;
我也尝试添加DependsOn注释,但仍然将sqsClient显示为null。
答案 0 :(得分:1)
Log4j2将通过调用@PluginFactory
带注释的方法(根据this answer)创建一个appender。您的appender可能不会在那里创建为Spring bean,很可能会调用new SQSAppender(...)
,并且不会处理@Autowired
。
可以在org.springframework.amqp.rabbit.log4j2.AmqpAppender中找到如何实现Spring管理的Log4j2 appender的示例。