我试图使用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?
答案 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");
}
}