异步任务

测试如下:
进行等待三秒在进行应答
@Service
public class AsynService { public void hello(){
try {
Thread.sleep();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("处理数据.....");
}
}

controller类:

@Controller
public class AsynController { @Autowired
AsynService asynService; @ResponseBody
@RequestMapping("/hello")
public String hello(){
asynService.hello();
return "success";
}
}

此时会有三秒的等待响应时间!!!!

但是如果工程量大的话,这样会比较麻烦

@Service
public class AsynService { //告诉spring这是一个异步的方法
@Async
public void hello(){
try {
Thread.sleep();
} catch (InterruptedException e) {
e.printStackTrace();
} System.out.println("处理数据.....");
}
}

开启方法:

@EnableAsync
@SpringBootApplication
public class TaskApplication { public static void main(String[] args) {
SpringApplication.run(TaskApplication.class, args);
} }
执行时 会立即响应  但是打印输出会在三秒之后

定时任务

项目开发中经常需要执行一些定时任务
比如凌晨时候,分析一个前一天的日志信息
Spring为我们提供了异步执行任务调度的方式
提供了TaskExecutor、TaskScheduler接口

cron属性:
*代表全部

定时做打印操作:

@Service
public class ScheduleService { //cron:second、minute、hour、day of mounth、day of week
@Scheduled(cron ="0 * * * * MON-SAT" )
public void hello(){
System.out.println("定时处理");
} }

开启注解:

//开启定时任务
@EnableScheduling
@SpringBootApplication
public class TaskApplication {
public static void main(String[] args) {
SpringApplication.run(TaskApplication.class, args);
}
}

在任意分钟的0-10s进行打印

@Scheduled(cron = "0-10 * * * * 0-7")
public void hello(){
System.out.println("定时处理");
}

邮件任务

-邮寄发送需要引入spring-boot-starter-mail
-Springboot 自动配置MailSenderAutoConfiguration
-定义MailProperties内容,配置在application.yml中
-自动装配JavaMailSender
-测试邮件的发送

自动配置的类
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQcAAAAdCAYAAACnkanuAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAXmSURBVHhe7Zvfbxw1EMfzHxGlEg1SS1WSwrXHDyUNUnvQoqpA+kB1hwQiEu1LdEDgBakPV1R+CB6i4wEVXkDRRUL8Z2bH3tkdj8fe3cR3OTXz8FFubc94PB5/b3eTrFy6ctUoiqJwVBwURRFRcVAURWSl3+8bRVEUzsqlV68YCei8fu0VRVHOCXDmqQaoOCiKYlFxUBRFRMVBURQRFQdFUURUHBRFEZmvONy4at548NBce/Sd2fzqBwt8hjboE20URVkK5iYOvcHAbBRisPHtzzJFH4yRbHPTGzw209mhGQ/WTW9z1zydPTGjzXVx7DzoDZ+Y2fSxubvAOZeR3uaWGU9n5vj42Ey+fFTtiTR2UdDakPpzcha1dxrmIg5WGA4EQeAUY2ICgYU0i2ycS3TR3+LQpcQB/UDBAk+H+TcuhzhU+Zjsiv054TnJNefd/cPK1yIPZQoVhzjZxaFXPC4k7xg4cAchPGLgYZhOD810fyvoh0Kzhdvx0NENwkOAguDmzL95WcQBihhy0aG4MIddBA9i5SIJbdIedGU0KfYzg5/TcJKc5OIsxOHDBx+Zm9vXvTa4hnbaJpFdHOB9gnf4D34yF++PzGp/x6y9dcus3bzj9xfYdxDMT7WJ+6DsfkJdX6H2+90PnScO9sCd7tC2IYc4gBjCwYID1rawux4ELpa5UXFYvDigEKBA8OsU2cUBXjjSg79+/1NzYeeOee3r+N0E2HA/dBN5UVWHjR06d4sYPiK49lIQqDg0HAbsR38Yg2t34sT7JDvAizPqF9fs+tGmEkN4LBLXXBccXg83PvbmqH35c8+obQsRS9on8gJ7SG2Gt+GdA7d1Y+yjJBH+2BrhOpozO6aeE/Y4iL0Y+34iDjsm6IvvO4X7gXGuja/DjxHt8c4YoDHE2lOgIAze22ktDEB2ceCPFC+9/o65vHfgtQUUNtwPFQdbtGUigvaq6Iv2SV3Yno1XTGyDinFSoqtCKJ9FvXnLjZeen7GPbjQcjDrOlF/3OYjFWyezJ2vj19S3m8vF5gkZzROZB/spjfZlf+y9AhX5cE9onGUecM0t1khzZttitcBzIsRx0vVVNoKfup3E0aJePftIextQGOCn1C+xAHF421z+4huvLaBJHMrPkGxawPQz2knKGhZAmODqHQZufOEb/VBsDNYHP+DuWoqJxxz36xcuwu+cYoeMX3N/Ymw0z0I/pdE+kRe4joqD5Je0dVkjRawFnpOmODqsr7KJ5FGqPTlGGAeC5/uOtTexNHcO/LHi5XsPzdq2/Fjx7M+ZeX70n3n2xz+Bn2ATy4SPaYEFBRQpPq+Ywg1CMPm2ECIbXI+Ti0QsMBpn0q+/ZtfmYsICCgqJrM2O99Yq59CLjcbO1sXpak/74HpR4uD6I3PxnDTF0WF9lY3gx7Zb+3KuRIz1eBdrKBJyuwQKAwoCv06RXRzCF5I/mov3hmb1xrZZffNdc2HnA9u+9f1vVhj2fn1uf3I/wSaWhwQPhW2jBcQ2BBS56c7Btpd3CvUctBD8ohtNqA+5SLhdtZEYZ9Kvv2ZrD+sKiqb24dZWx+KtO5JDLEjbJubNLzoYAzZN9q5fzgtcn+6xot0arX2qFnhOhDhOsj4aY7ieXTOu8lfOlYqx8DVmuQBfsXa4jiEJAQoEbZPILg5dfpUJogBj24gDYBNID7O3cW48frNOiwNXbXpQAO4z+qTfyHQ+Zxe+MEoVib0u4kIbe9DYb1XifsM1w4Gia5ba6RroummfX+D13Fx4ABq/HRMIqGzflJeYONTXzq+Us9gapZylaoH6Av8neiEprM/FT/q89WCsYO/HjfPwGCFXVQwk/7H2eZBdHIA2fwQ1/ftfKwrI738dib6U8wn/ZlUWz1zEAWj682kUhc/3Pqs+S36UFx/3LRp+e9Pbe2XxzE0cLIl/vEJBGI0+UXFQvNtwQIXh7JmvOCSAxwgUBUAfKxRluTgzcVAUZbnpJA4bvxwpinJOUHFQFEUkEAdoiCE5UBTlxcQ//33zPxs1ritxMZdeAAAAAElFTkSuQmCC" alt="" />

@ConfigurationProperties(
prefix = "spring.mail"
)
public class MailProperties {
private static final Charset DEFAULT_CHARSET;
private String host;
private Integer port;
private String username;
private String password;
private String protocol = "smtp";
private Charset defaultEncoding;
private Map<String, String> properties;
private String jndiName;
...
}

配置文件:

spring.mail.username=@qq.com
#授权码
spring.mail.password=keoszgbsssddbaad
spring.mail.host=smtp.qq.com
spring.mail.properties.mail.smtp.ssl.enable=true

host:

测试代码:

简单邮件

@Autowired
JavaMailSenderImpl javaMailSender; @Test
public void contextLoads() {
SimpleMailMessage msg = new SimpleMailMessage();
//邮件设置
msg.setSubject("猪头");
msg.setText("你就是猪头哦!!");
msg.setTo("xxxxxxxxx@qq.com");
msg.setFrom("12872213xx@qq.com"); javaMailSender.send(msg);
}
测试中邮件是可以成功发送的!!!

复杂的邮件测试:

@Test
public void test1() throws MessagingException {
//创建复杂邮件
MimeMessage msg = javaMailSender.createMimeMessage();
//上传文件
MimeMessageHelper helper = new MimeMessageHelper(msg,true); //邮件设置
helper.setSubject("pig"); helper.setText("<b style='color:red'>pig..... </b>",true);
helper.setTo("3212393029@qq.com");
helper.setFrom("12872213xx@qq.com"); //上传文件
helper.addAttachment("319898.jpg",new File("D:\\Tools\\319898.jpg"
)); javaMailSender.send(msg);
}

html的设置等都可以显示,图片的上传!!!

31、springboot与任务的更多相关文章

  1. 第3章 springboot接口返回json 3-1 SpringBoot构造并返回一个json对象

    数据的使用主要还是以JSON为主,我们不会去使用XML. 这个时候我们先不使用@RestController,我们使用之前SpringMVC的那种方式,就是@Controller.  @Respons ...

  2. 千锋很火的SpringBoot实战开发教程视频

    springboot是什么? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员 ...

  3. 微服务springboot视频最新SpringBoot2.0.3版本技术视频教程【免费学习】

    超火爆的springboot微服务技术怎么学,看这里,springboot超详细的教程↓↓↓↓↓↓https://ke.qq.com/course/179440?tuin=9b386640 01.sp ...

  4. jquery-bootgrid

    http://www.jquery-bootgrid.com/GettingStarted 日志是生产环境非常重要的配置,在迁移老的工程到spring-boot时日志的设置兼容很重要,以下是自己在配置 ...

  5. 每天学会一点点(JAVA基础)

    1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? 虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. Java被设计成允 ...

  6. 城市代码表mysql

    只有代码: # ************************************************************ # Sequel Pro SQL dump # Version ...

  7. 「小程序JAVA实战」springboot的后台搭建(31)

    转自:https://idig8.com/2018/08/29/xiaochengxujavashizhanspringbootdehoutaidajian31/ 根据下面的图,我们来建立下对应的sp ...

  8. SpringBoot IntelliJ创建简单的Restful接口

    使用SpringBoot快速建服务,和NodeJS使用express几乎一模一样,主要分为以下: 1.添加和安装依赖  2.添加路由(即接口) 3.对路由事件进行处理 同样坑的地方就是,祖国的防火墙太 ...

  9. springboot+druid

    最近项目需要搭建新工程,打算使用微服务的形式搭建便于后期拓展.看了一圈发现springboot易于搭建,配置简单,强化注解功能,"just run". Spring Boot ma ...

随机推荐

  1. 撩课-Java每天5道面试题第18天

    121.描述Struts2的工作原理 客户端发送请求--> 请求经过一系列过滤器-> FilterDispatcher通过 ActionMapper来决定这个Reques t需要调用哪个A ...

  2. drupal7 用到的一些钩子简介

    1.hook_user_delete($account) 可用于自定义模块中,当用户被删除时,可以自定义一些自己需要的处理动作 2.hook_mail_alter(&$message) 可用于 ...

  3. 【问题:发现与解决】angularJs指令在dijit控件中的使用

      由于公司主要用的JS框架是DOJO,最近又运用了angularJs.因此,不可能避免的遇到dojo控件和angular指令(directive)共用时遇到的一些问题,问题如下: <input ...

  4. Android碎笔录1——基本布局

    刚开始学Android开发的时候,没有H5的基础总是分不清android布局文件的用法,真正要学会android布局还是得实战一次,下面不多说,直接上代码. 这是一个登陆界面,LinerLayout嵌 ...

  5. Event percentages解析

    Event percentages: 0:--pct-touch//touch events percentage触摸事件百分比(触摸事件是一个在屏幕单一位置的按下-抬起事件) 1:--pct-mot ...

  6. 自学git心得-4

    本节介绍分支的一些具体应用实例. 1.Bug分支 设想我们正在分支dev上工作,突然接到一个修复bug的命令,我们需要创建分支issue-101来修复它,在此之前我们肯定需要先保存我们当前未完成的工作 ...

  7. 自学git心得-3

    转眼到第三节了,我们进入分支管理. git领域里的分支可以理解为一个有安全保障的临时仓库,有时我们新修改了代码,突然发现有bug需要回到之前的版本,有时我们开发到一半,突然要出去一趟,如何安全保存当前 ...

  8. js不管条件是否成立都要进行变量提升

    ### 不管条件是否成立都要进行变量提升 > 不管条件是否成立,判断体中出现的var/function都会进行变量提升:但是在最新浏览器版本当中,function声明的变量只能提前声明,不能定义 ...

  9. android资源的诡异问题

    最近,新开发版本,正在处于扫BUG的阶段. 发现一个比较诡异的问题,一个控件的颜色,背景色与预先设定的值,发生不一致.其他的类型的控件有同样的设置,但是现实结果正常. 今天,专门解决这个问题. 经过各 ...

  10. Windows server 2008系统各类版本的优缺点比较,Windows2008系统标准版 企业版 数据中心版 WEB版等

    大家都知道Windows Server 2008 发行了多种版本,以支持各种规模的企业对服务器不断变化的需求.Windows Server 2008 有 5 种不同版本,另外还有三个不支持 Windo ...