簡體   English   中英

將電子郵件發件人bean自動裝配到另一個bean中?

[英]Autowiring email sender bean into another bean?

我正在使用spring 3.x版本,並正在使用注釋來連接依賴項。 我有兩個如下的豆子。

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>

但問題是, emailSender注入MyAppender總是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實例無關。 因此,不會進行自動裝配,默認情況下,您的字段會初始化為null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM