自动实例化的bean参数?

时间:2017-01-26 09:59:05

标签: java spring spring-mvc dependency-injection

我是春天和春天的新手mvc

我正在学习他们提供​​以下@Configuration课程的课程:

Link

在第二个bean(smtpMailSender)中 - 有一个参数: JavaMailSender javaMailSender

但参数未被调用者传递。

教师说:“内部bean方法如果我们传递像这样的参数,参数将被弹簧注入

我的问题是 - 我怎么知道这是Spring的预期行为?什么是基于此的讲师? 是否存在JavaMailSender的特定特征,它是春天的一部分,因此被视为一个组件或在此处发挥作用?

1 个答案:

答案 0 :(得分:1)

简单地说,就是Spring在使用基于Java的配置时的工作方式。

当检测到使用@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