【发布时间】:2017-01-26 09:59:04
【问题描述】:
我是spring和spring mvc的新手
我正在学习一门课程,他们提供以下 @Configuration 类:
@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;
}
}
在第二个 bean (smtpMailSender) - 有一个参数: JavaMailSender javaMailSender
但是调用者没有传递参数。
导师说:“在bean方法内部如果我们像这样传递参数,参数将被spring注入”
我的问题是 - 我怎么知道这是 Spring 的预期行为?导师是根据什么来的? JavaMailSender 是否有一个特定的特性,它是 spring 的一部分,因此被视为一个组件,或者这里还有其他东西在起作用?
【问题讨论】:
标签: java spring spring-mvc dependency-injection