一、整合邮件服务

  如果要进行邮件的整合处理,那么你一定需要有一个邮件服务器,实际上 java 本身提供有一套 JavaMail 组件以实现邮件服务器的搭建,但是这个搭建的服务器意义不大,因为你现在搭建完成了,向一些大型的站点发送一封邮件,若干小时你就会被拉黑, 如果不想拉黑彼此之间就做一个白名单即可。

  要发送邮件,首先要知道邮件服务器,相当于我们是往对方的邮件服务器发送了一个请求。再一个,要有一个发件人。所以我们先用自己的账号密码登陆邮件服务器,再用登陆的邮件服务器给目标邮箱发送一个邮件。下面以163邮件为例。

1、添加依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

2、添加yml

spring:
mail:
host: smtp..com
port:
username: xxxxxxx@.com
password: xxxxxxx
properties:
mail.smtp.auth: true
mail.smtp.starttls.enable: true
mail.smtp.starttls.required: true

3、发送示例

    @Resource
private JavaMailSender javaMailSender ;
@Test
public void testSendMail() {
SimpleMailMessage message = new SimpleMailMessage() ; // 要发送的消息内容
message.setFrom("18842688753@163.com");
message.setTo("1065754909@qq.com");
message.setSubject("测试邮件)");
message.setText("好好学习,天天向上");
this.javaMailSender.send(message);
}

二、整合定时任务

  所有的系统开发里面定时调度绝对是一个核心的话题,对于定时调度的实现在实际开发之中可以使用:TimerTask、Quartz、 SpringTask 配置,实际上这里面最简单的配置就是 Spring 自己所提供的 Task 处理。

1、配置定时任务组件

MyTask.java

package com.example.demo.task;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import java.text.SimpleDateFormat;
import java.util.Date; @Component
public class MyTask {
@Scheduled(fixedRate = 2000) // 采用间隔调度,每2秒执行一次
public void runJobA() { // 定义一个要执行的任务
System.out.println("【*** MyTaskA - 间隔调度 ***】"
+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
.format(new Date()));
}
@Scheduled(cron = "* * * * * ?") // 每秒调用一次
public void runJobB() {
System.err.println("【*** MyTaskB - 间隔调度 ***】"
+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
.format(new Date()));
} }

2、启动类开启定时任务

@SpringBootApplication
@Import({SmsConfig.class})
@MapperScan("com.example.*.dao")
@EnableScheduling // 启用间隔调度
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
} }

当前任务调度只是串行任务调度,只有一个线程在工作,也就是说所有的任务是一个一个执行的处理方式,那么如果现在有一个任务所花费的时间特别的长,则其它的任务都会积压,实际开发之中很明显这种处理是不可能存在的。

如果要想启用并行的调度处理,则一定要准备出一个线程调度池,进行一个线程调度的配置类:

3、配置线程池

package com.example.demo.task;

import java.util.concurrent.Executors;

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar; @Configuration // 定时调度的配置类一定要实现指定的父接口
public class SchedulerConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { // 开启一个线程调度池
taskRegistrar.setScheduler(Executors.newScheduledThreadPool(10));
} }

注:如果觉得定时任务cron表达式每次初始化时已经确定了,维护起来不方便,可以考虑使用spring+quartz,把定时任务持久化到数据库中。参考:

Quartz实现数据库动态配置定时任务

springboot系列九,springboot整合邮件服务、整合定时任务调度的更多相关文章

  1. SpringBoot系列九:SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 服务整合 2.背景 在进行项目开发的时候经常会遇见以下的几个问题:需要进行邮件发送.定时的任务调 ...

  2. Springboot】Springboot整合邮件服务(HTML/附件/模板-QQ、网易)

    介绍 邮件服务是常用的服务之一,作用很多,对外可以给用户发送活动.营销广告等:对内可以发送系统监控报告与告警. 本文将介绍Springboot如何整合邮件服务,并给出不同邮件服务商的整合配置. 如图所 ...

  3. 五、springboot 简单优雅是实现邮件服务

    前言 spring boot 的项目放下小半个月没有更新了,终于闲下来可以开心的接着写啦. 之前我们配置好mybatis 多数据源的,接下来我们需要做一个邮件服务.比如你注册的时候,需要输入验证码来校 ...

  4. SpirngBoot之整合邮件服务

    一.集成邮件服务 1.1 获取客户端授权码 1.2 引入依赖 <dependencies> ...... <dependency> <groupId>org.spr ...

  5. Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)

    前言 由于在开发My Blog项目时使用了大量的技术整合,针对于部分框架的使用和整合的流程没有做详细的介绍和记录,导致有些朋友用起来有些吃力,因此打算在接下来的时间里做一些基础整合的介绍,当然,可能也 ...

  6. SpringBoot第十九篇:邮件服务

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11118340.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   邮件的重要 ...

  7. SPRING-BOOT系列之SpringBoot的诞生及其和微服务的关系

    转载自 : https://www.cnblogs.com/ityouknow/p/9034377.html 微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法 ...

  8. SPRING-BOOT系列之SpringBoot快速入门

    今天 , 正式来介绍SpringBoot快速入门 : 可以去如类似 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/refer ...

  9. windows 服务实现定时任务调度(Quartz.Net)

    我们通常在一些情况下需要软件具有一个自动执行某些任务的功能,但是又不希望直接启动软件,或者每次都要手动的来启动软件,这时我们可可以考虑到windows服务了. 首先创建一个windows服务项目(详细 ...

随机推荐

  1. 洛谷 [HNOI2014]道路堵塞 解题报告

    [HNOI2014]道路堵塞 题意 给一个有向图并给出一个这个图的一个\(1\sim n\)最短路,求删去这条最短路上任何一条边后的最短路. 又事SPFA玄学... 有个结论,新的最短路一定是\(1\ ...

  2. 安装Prometheus-Opeartor

    一.下载git clone clone https://github.com/coreos/prometheus-operator.git或:wget https://github.com/coreo ...

  3. 软Raid5制作

    以raid5为例: 1.添加4块磁盘要求:容量.转速.接口一样的硬盘. 2.创建分区并修改ID[root@localhost ~]# fdisk /dev/sdb[root@localhost ~]# ...

  4. 使用selenium模拟登陆oschina

    Selenium把元素定位接口封装得更简单易用了,支持Xpath.CSS选择器.以及标签名.标签属性和标签文本查找. from selenium.webdriver import PhantomJS ...

  5. js中事件绑定要注意的事项之如何在方法中自己打印自己的值

    下面是错误的js方法绑定,这样写会造成在方法中不能用 调用方法的dom本身的一些 东西,如各种属性或者jq对象等. <!DOCTYPE html> <html> <hea ...

  6. zoj 3195(LCA加强版)

    传送门:Problem 3195 https://www.cnblogs.com/violet-acmer/p/9686774.html 题意: 给一个无根树,有q个询问,每个询问3个点(a,b,c) ...

  7. JAVA-集合类型Set常用操作例子(基础必备)

    package com.net.xinfang.reflect; import java.util.Comparator; import java.util.HashSet; import java. ...

  8. H5利用canvas实现海报功能

    最近接到一个需求,微信中用户上传图片生成海报.这个需求比较常规,实现思路也比较简单,通过利用用户的input输入,对所上传的图片进行处理,最后通过第三方库html2canvas合成对应的图片即可.思路 ...

  9. MySQL聚合函数、控制流程函数

    [正文] 一.navicat的引入:(第三方可视化的客户端,方便MySQL数据库的管理和维护) NavicatTM是一套快速.可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设 ...

  10. Java编程思想 学习笔记12

    十二.通过异常处理错误  Java的基本理念是“结构不佳的代码不能运行”. Java中的异常处理的目的在于通过使用少于目前数量的代码来简化大型.可靠的程序的生成,并且通过这种方式可以使你更加自信:你的 ...