默认的JavaMailSender Bean在哪里?

时间:2018-10-01 12:07:29

标签: java spring spring-boot

我试图使用spring-boot-starter-mail依赖,但是当我尝试自动装配JavaMailSender对象时,我的IDE(IntelliJ)告诉我无法自动装配该bean。 但是在documentation中说过,当定义spring.mail.host时就创建了bean……是这种情况……

    @Service
public class MailService implements IMailService {

    @Autowired
    public JavaMailSender mailSender;

    @Override
    public void sendMail(String to, String subject, String text) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(to);
        message.setSubject(subject);
        message.setText(text);
        mailSender.send(message);
    }

}

当我仅通过返回对象(没有配置)来自己创建bean时。他没有使用属性文件中设置的任何配置...

@Bean
public JavaMailSender javaMailSender() {
    return new JavaMailSenderImpl();
}

我是否必须使用所有配置集自己创建Bean?

1 个答案:

答案 0 :(得分:0)

有时IntelliJ不会自动检测Spring的配置,因此必须手动将其添加到项目中。转到File -> Project Structure -> Facets,检查是否已配置,否则单击+按钮->选择所需的模块。

另外,按照M. Deinum的建议,尝试在Spring Boot应用程序中运行@Service bean,并检查是否存在任何自动装配依赖项的异常。 JavaMailSender bean应该在MailSenderAutoConfiguration模块内的spring-boot-autoconfigure类中创建。

@SpringBootApplication
public class MailApplication implements CommandLineRunner {

    @Autowired
    public MailSender mailSender;

    public static void main(String[] args) {
        SpringApplication.run(MailApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        mailSender.sendMail("joe.bloggs@example.com", "Subject", "Body");
    }
}