Я боролся с этой самой проблемой для класса обслуживания электронной почты, закодированного как:
@Service("emailService")
public class EmailService {
@Autowired private JavaMailSenderImpl mailSender;
...
public void send(...) {
// send logic
}
}
I наткнулся на решение, читая о связанной теме.Ключевым моментом является то, что интерфейс JavaMailSender
определен в applicationContext.xml
как класс Spring JavaMailSenderImpl
.
Шаг 1. Файл контекста приложения был изменен, чтобы включить следующее определение компонента:
<bean id="mailSender"
class="org.springframework.mail.javamail.JavaMailSenderImpl"
p:host="myMailserver.mycompany.com" />
Шаг 2. Класс обслуживания электронной почты был изменен так:
@Service("emailService")
public class EmailService {
@Autowired private JavaMailSender mailSender; // Observe the change in the type
...
Вуаля!Весна счастлива.Я хотел бы , хотя хотел бы услышать правильное объяснение первоначальной ошибки.