gpt4 book ai didi

java - 将电子邮件发件人 bean Autowiring 到另一个 bean 中?

转载 作者:行者123 更新时间:2023-11-29 08:57:31 24 4
gpt4 key购买 nike

我正在使用 spring 3.x 版本并使用注释来连接依赖项。我有两个 bean,如下所示。

package com.sample.project.service;
@Component
public class MyAppender extends AppenderSkeleton{


//here trying to inject emailSender bean
@Autowired
private EmailSender emailSender;

//some code with emailSender
//emailSender.callSomeService...


}

上面的 bean 扩展了 log4j 的 AppenderSkeleton 类。

package com.sample.project.service;
@Component
public class EmailSender {

@Autowired
private SomeOtherBean someOther;

//somecode

}

我在 applicationContext.xml 中有一个条目,如下所示。

<context:component-scan base-package="com.sample.project.service" />

Log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

<!-- Appenders -->

<appender name="stdout" class="com.sample.project.service.MyAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %p [%c] - %m%n"/>
</layout>
</appender>


<appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="500"/>
<appender-ref ref="stdout"/>
</appender>

<root>
<level value="INFO" />
<appender-ref ref="ASYNC" />
</root>

</log4j:configuration>

但问题是,注入(inject)MyAppenderemailSender总是null。我在这里做错了什么吗?或者覆盖 log4j 特定类并用 @Component 注释它们有什么问题吗?谢谢!请帮助我!

最佳答案

有了这个配置

<appender name="stdout" class="com.sample.project.service.MyAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %p [%c] - %m%n"/>
</layout>
</appender>

log4j 正在创建自己的 MyAppender 实例。此实例与 Spring 创建的 @Component 实例无关。因此,没有 Autowiring ,您的字段默认初始化为 null

关于java - 将电子邮件发件人 bean Autowiring 到另一个 bean 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19452677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com