我是春天和春天的新手mvc
我正在学习他们提供以下@Configuration课程的课程:
Link
在第二个bean(smtpMailSender)中 - 有一个参数: JavaMailSender javaMailSender
但参数未被调用者传递。
教师说:“内部bean方法如果我们传递像这样的参数,参数将被弹簧注入”
我的问题是 - 我怎么知道这是Spring的预期行为?什么是基于此的讲师? 是否存在JavaMailSender的特定特征,它是春天的一部分,因此被视为一个组件或在此处发挥作用?
答案 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。