无法在log appender中自动装配spring bean

时间:2018-04-23 18:11:03

标签: java spring spring-boot

我正在尝试在我创建的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。

1 个答案:

答案 0 :(得分:1)

Log4j2将通过调用@PluginFactory带注释的方法(根据this answer)创建一个appender。您的appender可能不会在那里创建为Spring bean,很可能会调用new SQSAppender(...),并且不会处理@Autowired

可以在org.springframework.amqp.rabbit.log4j2.AmqpAppender中找到如何实现Spring管理的Log4j2 appender的示例。