2017-01-26 13 views
0
私は春に新たなんだ

とSpring MVCの自動化されたBeanパラメータ?

私は、彼らが次@Configurationクラス提示かけつもりです:第二のBean(smtpMailSender)で

@Configuration 
public class MailConfig { 

    @Bean 
    @ConditionalOnProperty(name="spring.mail.host", 
     havingValue="foo", 
     matchIfMissing=true) 
    public MailSender mockMailSender() { 
     return new MockMailSender(); 
    } 

    @Bean 
    @ConditionalOnProperty(name="spring.mail.host") 
    public MailSender smtpMailSender(**JavaMailSender javaMailSender**) { 
     SmtpMailSender mailSender = new SmtpMailSender(); 
     mailSender.setJavaMailSender(javaMailSender); 
     return mailSender; 
    } 
} 

を - パラメータがあります: JavaMailSender javaMailSender

ただし、パラメータは呼び出し元によって渡されません。

インストラクター

は言う:「Beanメソッドの内部 私たちはこの1つのようにパラメータを渡す場合、パラメータは春によって注入される」

私の質問は - どのように私は、これは春の予想される動作であることを知っている可能性があり?これを踏まえたインストラクターは何ですか? には、Springの一部であるため、コンポーネントとして扱われるJavaMailSenderの特質がありますか?

答えて

1

これは、Javaベースの設定を使用しているときにSpringが動作する方法です。

@Beanで注釈が付けられたメソッドが検出され、パラメータを持つ場合、Springはデフォルトで自動配線します。それはタイプによってそうする。この場合

@Bean 
@ConditionalOnProperty(name="spring.mail.host") 
public MailSender smtpMailSender(JavaMailSender javaMailSender) { 
    SmtpMailSender mailSender = new SmtpMailSender(); 
    mailSender.setJavaMailSender(javaMailSender); 
    return mailSender; 
} 

、この方法にタイプJavaMailSenderのBeanを注入します。あなたがデフォルトで設定され、注入されるSpring Bootを使用しているとき。詳細については、the reference guideを参照してください。

関連する問題