1.Spring-Task 定时调度任务
Spring-task,我们可以将它比作一个轻量级的Quartz,使用简单方便,
除spring相关的包外不需要额外的包,
而且支持注解,主要用于定时处理一些业务的框架
1.1.配置
<!-- 支持异步方法执行 -->
<task:executor id="myexecutor" pool-size="10" />
<!--开启这个配置,spring才能识别@Scheduled注解-->
<task:annotation-driven executor="myexecutor"/>
1.2.使用@Scheduled 定时任务注解
创建task包和MyTask类,并扫描包
<context:component-scan base-package="cn.itsource.task" />
代码
@Component
public class MyTask {
@Autowired
UserService userService;
// 每2秒执行一次
@Scheduled(cron = "0/2 * * * * ? ")
public void test(){
System.out.println(new Date()+"==="+userService.queryAllList().size());
}
}
cron表达式 http://cron.qqe2.com/
2.集成邮件
maven-jar包依赖
2.2. maven-jar包依赖
<!-- 邮件-->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
2.3spring-msg.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd">
<!-- 支持异步方法执行 -->
<task:executor id="myexecutor" pool-size="10" />
<!--开启这个配置,spring才能识别@Scheduled注解-->
<task:annotation-driven executor="myexecutor"/>
<bean id="emailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<!--邮件服务器-->
<property name="host" value="${email.host}"/>
<property name="protocol" value="${email.protocol}"/>
<!--邮箱号码-->
<property name="username" value="${email.username}"/>
<!--邮箱授权码-->
<property name="password" value="${email.password}"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.timeout">25000</prop>
</props>
</property>
</bean>
</beans>
2.4 spring-conifg.xml添加属性配置
<!-- 引入属性文件
<context:property-placeholder location="classpath:properties/jdbc.properties" />-->
<!-- 引入系统属性文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:properties/dev.properties</value>
<value>classpath:properties/jdbc.properties</value>
</list>
</property>
</bean>
2.5 测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Email_Test {
@Autowired
JavaMailSenderImpl emailSender;
@Autowired
EmailUtill emailUtill;
@Value("${email.username}")
private String username;
// 简单邮件
@Test
public void SimpleMailMessage() throws Exception {
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setFrom(username);// 发送人
mailMessage.setTo("605271504@qq.com");// 收件人
mailMessage.setSubject("隐世集团");// 标题
mailMessage.setText("隐无为-祝福你"); // 内容
emailSender.send(mailMessage);
}
// html 文件
@Test
public void htmlMailMessage() {
MimeMessage mimeMsg = emailSender.createMimeMessage();
try {
String html = "<h1>隐世集团祝福你</h1>";
MimeMessageHelper helper = new MimeMessageHelper(mimeMsg, true);
helper.setTo(username);
helper.setFrom("605271504@qq.com");
helper.setSubject("隐世集团");
helper.setText(html, true);
emailSender.send(mimeMsg);
} catch (Exception e) {
e.printStackTrace();
}
}
}
1.5. 抽离成工具类
@Component
public class EmailUtill {
@Autowired
JavaMailSenderImpl emailSender;
@Value("${email.username}")
private String username;
//@Async
public void sendMail(String sendTo,String title,String content) throws Exception {
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setFrom(username);// 发送人
mailMessage.setTo(sendTo);// 收件人
mailMessage.setSubject(title);// 标题
mailMessage.setText(content); // 内容
emailSender.send(mailMessage);
}
}
注意:加上这个注解@Component交给spring所管理
@Async 异步方法注解