任务
SpringBoot整合Quartz(繁琐)
相关概念:
工作(Job):用于定义具体执行的工作。
工作明细(JobDetail):用于描述定时工作相关的信息。
触发器(Trigger):用于描述触发工作的规则,通常使用cron表达式定义调度规则。
调度器(Scheduler):描述了工作明细与触发器的对应关系。
1.导入SpringBoot整合quartz的坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
2.定义具体要执行的任务,继承QuartzJobBean
public class MyQuartz extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("quartz task run");
}
}
3,定义工作明细与触发器,并绑定对应关系
@Configuration
public class QuartzConfig {
@Bean
public JobDetail printJobDetail(){
//绑定具体的工作
return JobBuilder.newJob(MyQuartz.class).storeDurably().build();
}
@Bean
public Trigger printJobTrigger(){
ScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
//绑定对应的工作明细
return TriggerBuilder.newTrigger().forJob(printJobDetail()).withSchedule(scheduleBuilder).build();
}
}
Spring Task
1.开启定时任务功能
@SpringBootApplication
@EnableScheduling
public class Springboot22TaskApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot22TaskApplication.class, args);
}
}
2.设置定时执行的任务,并设定执行周期
@Component
public class MyBean {
@Scheduled(cron = "0/5 * * * * ?")
public void print(){
System.out.println("spring task run");
}
}
3.定时任务相关配置
spring:
task:
scheduling:
# 任务调度线程池大小 默认为1
pool:
size: 1
# 调度线程池名称前缀 默认 scheduling_
thread-name-prefix: ssm_
shutdown:
# 线程池关闭时等待所有任务完成
await-termination: false
# 调度线程关闭前最大等待时间,确保最后一定关闭
await-termination-period: 10s
邮件
发送简单邮件
SpringBoot整合JavaMail
SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于发送电子邮件的传输协议。
POP3(Post Office Protocol - Version 3):用于接收电子邮件的标准协议。
IMAP(Internet Mail Access Protocol):互联网消息协议,是POP3的替代协议。
1.导入SpringBoot整合javamail
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.配置Javamail
spring:
mail:
host: smtp.qq.com
username: 0@qq.com
password: *
3.开启定时任务功能
@Service
public class SendMailServiceImpl implements SendMailService {
@Autowired
private JavaMailSender javaMailSender;
//发送人@qq.com
private String from = "@qq.com";
//接收人@163.com
private String to = "@163.com";
//标题
private String subject = "测试邮件";
//正文
private String context = "正文内容";
@Override
public void sendMail() {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from+"(别名)");
message.setTo(to);
message.setSubject(subject);
message.setText(context);
javaMailSender.send(message );
}
}
发送多部件邮件
附件与HTML文本支持
@Service
public class SendMailServiceImpl2 implements SendMailService {
@Autowired
private JavaMailSender javaMailSender;
//发送人@qq.com
private String from = "@qq.com";
//接收人@163.com
private String to = "@163.com";
//标题
private String subject = "测试邮件";
//正文
private String context = "<a href='http://www.baidu.com'>百度</a>";
@Override
public void sendMail(){
try {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(context,true);
//添加附件
File file = new File("logo.png");
helper.addAttachment("美图.png",file);
javaMailSender.send(message );
} catch (Exception e) {
e.printStackTrace();
}
}
}