定时任务
1、主方法(springbootapplication)中添加注释@EnableScheduling //开启定时任务的注解
@SpringBootApplication
@EnableScheduling //开启定时功能
public class SpringbootCronApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootCronApplication.class, args);
}
}
2、Service层(@Service)方法上添加@Scheduled(cron = "0 13 10 * * ?") //指定10点13分整执行此代码,cron格式:秒 分 时 日 月 周几 ,其中,周中0和7均表示周日
@Service
public class ScheduleService {
@Scheduled(cron = "0 53 16 * * ?") //秒 分 时 日 月 周
public void hello(){
System.out.println("执行中....");
}
}
cron表达式例:
a:0 13 10 * * ? //表示每天10点13分整执行;
b: 30 0/5 10,18 * * ? //表示每天10点和18点,每隔5分钟执行一次
详细可参照:https://www.cnblogs.com/yanghj010/p/10875151.html
异步任务
1、service层(有@Service注释的类)要异步执行的方法上添加@Async注解,表示这是一个异步方法
@Service
public class AsyncService {
@Async //告诉spring这是一个异步方法
public void hello() throws InterruptedException {
Thread.sleep(3000);
System.out.printf("数据正在处理.....");
}
}
2、在主方法apringbootapplication类上开启异步(添加@EnableAsync注释,告诉spring这是一个异步的方法)
@SpringBootApplication
@EnableAsync //开启异步调用功能
public class Springboot09AsyncApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot09AsyncApplication.class, args);
}
}
3、在controller层注入(@Autowired)步骤1的类,然后直接调用它里面异步的方法即可
@RestController
public class AsyncController {
@Autowired
AsyncService asyncService;
@RequestMapping("/hello")
public String async() throws InterruptedException {
asyncService.hello();
return "ok";
}
}
邮件任务
1、pom中添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、配置文件中配置邮箱相关信息:
spring.mail.username=XXXXX@qq.com
spring.mail.password=XXXXXXXXXXX
spring.mail.host=smtp.qq.com
#开启加密验证,只有QQ需要,其他邮箱不需要
spring.mail.properties.mail.smtp.ssl.enable=true
3、测试类中注入JavaMailSenderImpl类,直接调用里面的方法即可。代码示例:
@Autowired
JavaMailSenderImpl mailSender;
@Test
void contextLoads() {
//简单的邮件
SimpleMailMessage mailMessage= new SimpleMailMessage();
mailMessage.setSubject("test标题");
mailMessage.setText("文本内容测试");
mailMessage.setTo("XXXXXXX@qq.com"); //邮件接收者
mailMessage.setFrom("XXXXXXX@qq.com"); //邮件发送者
mailSender.send(mailMessage);
}
@Test
void contextLoads2() throws MessagingException {
//复杂的邮件
MimeMessage mailMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mailMessage,true); //true表示开启支持多文件
helper.setSubject("邮件标题");
helper.setText("<p style='color:red'>邮件内容文本</p>",true); //true表示是否支付解析
//附件
helper.addAttachment("1.jpeg",new File("/Users/apple/Desktop/1.jpeg"));
helper.addAttachment("2.jpeg",new File("/Users/apple/Desktop/1.jpeg"));
helper.setTo("XXXXXXX@qq.com");
helper.setFrom("XXXXXXX@qq.com");
mailSender.send(mailMessage);
}