アプリケーションでJavaMailSenderImplを使用してSpringフレームワークでJavaMailを構成しました。実際には、データベースからメーリングプロパティをロードしようとし、Spring config.xmlファイルで少し変更を加えました。しかし、私はエラーが発生しました
「Bean の初期化に失敗しました。ネストされた例外は org.springframework.beans.TypeMismatchException です: タイプ [com.core.springexamples.UCMSMailImpl] のプロパティ値をプロパティ 'mailSender' の必要なタイプ [org.springframework.mail.MailSender] に変換できませんでした」 ; ネストされた例外は java.lang.IllegalArgumentException: タイプ [com.core.springexamples.UCMSMailImpl] の値をプロパティ 'mailSender' の必要なタイプ [org.springframework.mail.MailSender] に変換できません: 一致するエディターまたは変換戦略が見つかりません"
私のアプリケーションにどのような変更が実装されていても、それらは以下に記載されています。
ステップ1:
<bean id="javaMailImpl" class="org.springframework.mail.javamail.JavaMailSenderImpl"></bean>
ステップ2:-
<bean id="mailSender" class="com.core.springexamples.UCMSMailImpl" scope="prototype" init-method="configuredProperties">
<property name="javaMailImpl" ref="javaMailImpl"></property>
</bean>
com.core.springexamples.UCMSMailImpl :-
public class UCMSMailImpl {
private JavaMailSenderImpl javaMailImpl;
private ConfigDAO configDAO;
public void configuredProperties(){
System.out.println("UCMSMailImpl::configuredProperties");
Properties props=new Properties();
String[] mildata=configDAO.getMailingPropData();
props.put("mail.smtp.auth", mildata[0]);
props.put("mail.smtp.starttls.enable", mildata[2]);
props.put("mail.smtp.host", mildata[3]);
props.put("mail.smtp.port", mildata[4]);
props.put("mail.smtp.host", mildata[5]);
props.put("username", mildata[6]);
props.put("password",mildata[7]);
getJavaMailImpl().setJavaMailProperties(props);
}
public JavaMailSenderImpl getJavaMailImpl() {
return javaMailImpl;
}
public void setJavaMailImpl(JavaMailSenderImpl javaMailImpl) {
this.javaMailImpl = javaMailImpl;
}
public void setConfigDAO(ConfigDAO configDAO){
this.configDAO=configDAO;
}
public ConfigDAO getConfigDAO(){
return configDAO;
}
ステップ 3: - UCMSMailImpl Java クラスを使用して MailSender.send からメールを送信しようとしています。UCMSMailImpl Bean を参照しました。
<bean id="sendMail" class="com.core.springexamples.JavaMailing">
<property name="mailSender" ref="mailSender"></property>
</bean>
public class JavaMailing {
private MailSender mailSender;
public void sendMail(String from,String to,String text,String subject){
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(text);
mailSender.send(message);
}
/**
* @return the mailSender
*/
public MailSender getMailSender() {
return mailSender;
}
/**
* @param mailSender the mailSender to set
*/
public void setMailSender(MailSender mailSender) {
this.mailSender = mailSender;
}
ステップ 4:- sendMail Bean をテストしようとしています
ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext-mail.xml");
JavaMailing m=(JavaMailing)context.getBean("sendMail");
m.sendMail("john.ch@gmail.com", "john.c@gmail.com", "TEST MAIL", "TEST MAIL");
しかし、例外は TypeMismatchException: Failed to convert property value of type [com.core.springexamples.UCMSMailImpl] to required type [org.springframework.mail.MailSender] for property
私を助けてください。