1.异步任务
在主类中加上@EnableAsync//开启异步注解
在方法上加上@Async
service:
@Async
public void hello() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("处理数据中");
}
controller:
@RequestMapping("/hello1")
public String hello1() {
asyncTaskService.hello();
return "success";
}
会发现先返回success,3秒后输出处理数据中。
2.定时任务
在主类加上@EnableScheduling//开启定时任务注解
在需要定时的方法上加上@Scheduled注解,然后写上cron表达式
import java.text.SimpleDateFormat;
import java.util.Date;
@Service
public class ScheduleService {
@Scheduled(cron = "0 * * * * MON-SAT")
public void hello() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sdf.format(new Date());
System.out.println(date + " hello...");
}
}
程序运行后,该方法就会按照cron表达式自动执行。
3.邮件任务
3.1 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
3.2 在application.properties中配置邮件相关信息
#配置邮件发送
spring.mail.username=132XXXXXX@qq.com
spring.mail.password=XXXXXXXXXXX
spring.mail.host=smtp.qq.com
spring.mail.properties.mail.stmp.ssl.enable=true
password不是账户密码,是授权码。
3.3 发送测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class mailSendTest {
@Autowired
JavaMailSenderImpl mailSender;
@Test
public void contextLoads() {
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject("Hello,world!");
message.setText("text");
message.setTo("XXXXXXX@qq.com");
message.setFrom("XXXXXXXX@qq.com");
mailSender.send(message);
}
}
ps:因为要使用spring自动装配的JavaMailSenderImpl所以需要把单元测试集成到springboot中。使用RunWith(SpringRunner.class) 和 @SpringBootTest即可。