异步任务

测试如下:
进行等待三秒在进行应答
  1. @Service
  2. public class AsynService {
  3.  
  4. public void hello(){
  5. try {
  6. Thread.sleep();
  7. } catch (InterruptedException e) {
  8. e.printStackTrace();
  9. }
  10. System.out.println("处理数据.....");
  11. }
  12. }

controller类:

  1. @Controller
  2. public class AsynController {
  3.  
  4. @Autowired
  5. AsynService asynService;
  6.  
  7. @ResponseBody
  8. @RequestMapping("/hello")
  9. public String hello(){
  10. asynService.hello();
  11. return "success";
  12. }
  13. }

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

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

  1. @Service
  2. public class AsynService {
  3.  
  4. //告诉spring这是一个异步的方法
  5. @Async
  6. public void hello(){
  7. try {
  8. Thread.sleep();
  9. } catch (InterruptedException e) {
  10. e.printStackTrace();
  11. }
  12.  
  13. System.out.println("处理数据.....");
  14. }
  15. }

开启方法:

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

定时任务

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

cron属性:
*代表全部

定时做打印操作:

  1. @Service
  2. public class ScheduleService {
  3.  
  4. //cron:second、minute、hour、day of mounth、day of week
  5. @Scheduled(cron ="0 * * * * MON-SAT" )
  6. public void hello(){
  7. System.out.println("定时处理");
  8. }
  9.  
  10. }

开启注解:

  1. //开启定时任务
  2. @EnableScheduling
  3. @SpringBootApplication
  4. public class TaskApplication {
  5. public static void main(String[] args) {
  6. SpringApplication.run(TaskApplication.class, args);
  7. }
  8. }

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

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

邮件任务

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

自动配置的类
aaarticlea/png;base64,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" alt="" />

  1. @ConfigurationProperties(
  2. prefix = "spring.mail"
  3. )
  4. public class MailProperties {
  5. private static final Charset DEFAULT_CHARSET;
  6. private String host;
  7. private Integer port;
  8. private String username;
  9. private String password;
  10. private String protocol = "smtp";
  11. private Charset defaultEncoding;
  12. private Map<String, String> properties;
  13. private String jndiName;
  14. ...
  15. }

配置文件:

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

host:

测试代码:

简单邮件

  1. @Autowired
  2. JavaMailSenderImpl javaMailSender;
  3.  
  4. @Test
  5. public void contextLoads() {
  6. SimpleMailMessage msg = new SimpleMailMessage();
  7. //邮件设置
  8. msg.setSubject("猪头");
  9. msg.setText("你就是猪头哦!!");
  10. msg.setTo("xxxxxxxxx@qq.com");
  11. msg.setFrom("12872213xx@qq.com");
  12.  
  13. javaMailSender.send(msg);
  14. }
测试中邮件是可以成功发送的!!!

复杂的邮件测试:

  1. @Test
  2. public void test1() throws MessagingException {
  3. //创建复杂邮件
  4. MimeMessage msg = javaMailSender.createMimeMessage();
  5. //上传文件
  6. MimeMessageHelper helper = new MimeMessageHelper(msg,true);
  7.  
  8. //邮件设置
  9. helper.setSubject("pig");
  10.  
  11. helper.setText("<b style='color:red'>pig..... </b>",true);
  12. helper.setTo("3212393029@qq.com");
  13. helper.setFrom("12872213xx@qq.com");
  14.  
  15. //上传文件
  16. helper.addAttachment("319898.jpg",new File("D:\\Tools\\319898.jpg"));
  17.  
  18. javaMailSender.send(msg);
  19. }

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. Golang报错mixture of field:value and value initializers

    Golang 在使用匿名成员初始化时,如果出现 mixture of field:value and value initializers 是因为初始化的方式不对,见代码: package main ...

  2. 使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0

    使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0 网上的 MapReduce WordCount 教程对于如何编译 WordCount.java 几乎是一笔带过… 而有写到的 ...

  3. 由上一个血案引发的关于property和attribute关系的思考

    boss说,学习要刨根问底. 好的,开刨. 一.property和attribute在英语里有什么区别 看似没有区别.但其实大神说: property是 物体本身自带属性,不能改变的(一旦改了就是另外 ...

  4. HTML绝对路径和相对路径

    HTML路径: 绝对路径:从根目录开始 相对路径:../ 相对于html文件,上一级 ./ 相对于html文件,当前路径(可以省略) 文件夹名 相对于html文件,往文件里面走

  5. JavaWeb学习总结(四):Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  6. 转:Redis和Memcache的区别分析

    Redis和Memcache的区别分析  原文链接:http://blog.csdn.net/u013474436/article/details/48632665 简单区别: 1. Redis中,并 ...

  7. 获取JPEGImageEncoder和JPEGCode这两个类

    最近要对PDF做一些操作,在查看别人代码,拿过来借用的时候,由于代码不完整,引用的类也不全,导致JPEGImageEncoder和JPEGCode这两个类找不到,后来网上搜索了下,发现这两个类来自于J ...

  8. GeoAnalytics Server学习笔记

    GA的输入数据源 输入源 存储形式 Spatiotemporal 时空型ArcGIS DataStore 物联网数据 (通过GeoEvent Server输出) 大数据共享目录BigDataShare ...

  9. 移动目标在三维GIS中的实现方法

    对于基于ArcGIS Runtime的应用程序,其实现方法比较简单,可以直接更新图形的Geometry属性,即可实现位置的移动: private void AddGraphics() { var gl ...

  10. (WCF) 多线程 (Multi-threading) 和 并发性 (Concurency)

    问题:WCF 有个Server端,还有个Client端,他们之间是如何进行并发,多线程通信的呢?多个Client端同时访问Server,如何保证Server端的操作线程安全呢? 在理解WCF Conc ...