如何在春季实施异步电子邮件服务 [英] how to implements an async email service in spring

查看:102
本文介绍了如何在春季实施异步电子邮件服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的电子邮件服务

@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

And I use JavaMailSenderImpl to implement 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>

让spring识别@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在服务方法中不起作用,对吧?

But it is said, @Async don't work in service method, right?

我应该怎么做才能实现它?

What should I do to implement it?

推荐答案

帖子,

... 我从同一个类中调用该方法.我相信这与Spring的代理机制有关.

现在,我从同一个 @Service 类中分离了 @Async 方法.这符合我的问题.

Now I separated @Async methods from the same @Service class. That fits my problem.

这篇关于如何在春季实施异步电子邮件服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆