這裏是我的電子郵件服務如何在春季實現異步電子郵件服務
@Service("mailService")
public class EmailService
{
@Autowired
private MailSender mailSender;
@Async
public void sendMail(String to, String subject, String body) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to);
message.setSubject(subject);
message.setText(body);
mailSender.send(message);
}
@Async
public void sendPreConfiguredMail(String to,SimpleMailMessage configuredMessage) {
SimpleMailMessage mailMessage = new SimpleMailMessage(configuredMessage);
mailMessage.setTo(to);
mailSender.send(mailMessage);
}
}
而且我用JavaMailSenderImpl實現MailSender
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com"/>
<property name="port" value="25"/>
<property name="username" value="xxx"/>
<property name="password" value="xxx"/>
<property name="javaMailProperties">
<props>
<prop key="mail.transport.protocol">smtp</prop>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.debug">true</prop>
</props>
</property>
</bean>
讓春天認識@Async
<mvc:annotation-driven />
<bean id="executorService" class="java.util.concurrent.Executors"
factory-method="newFixedThreadPool">
<constructor-arg value="10" />
</bean>
<task:executor id="threadPoolTaskExecutor" pool-size="10" />
<task:annotation-driven executor="executorService" />
<context:component-scan base-package="com.bistyle.lifelog" />
但據說,@Async不能在服務方法中工作,對不對?
我該怎麼做才能實現它?
是什麼讓你的事情「但據說,@ @ Async'不能在服務方法中工作,對不對? - 它應該工作。 (如果你不使用真正的AspectJ,那麼你需要從其他bean調用'@ Async'annotated方法,但這是一個不同的主題) – Ralph
我的配置中是否有任何問題?在我的測試中,瀏覽器會一直等到電子郵件發出。另外有人告訴我,這是因爲@Async在服務方法中不起作用。你怎麼看? –
我在Service方法中使用了@ @ Asyn,並且它可以工作。 - 「我的配置有問題嗎?」也許:你有第二個彈簧配置文件嗎? – Ralph