springboot----13.springboot与任务

springboot与任务

异步任务

Service:

@Service
public class HelloService {
     

    @Async
    public void hello(){
     
        try {
     
            TimeUnit.SECONDS.sleep(3); //睡3秒
        } catch (InterruptedException e) {
     
            e.printStackTrace();
        }
        System.out.println("Hello......");
    }
}

Controller:

@RestController
public class HelloController {
     

    @Autowired
    HelloService helloService;

    @GetMapping("/hello")
    public String hello(){
     
        helloService.hello();
        return "success";
    }
}

可以发现,客户端如果通过浏览器访问localhost:8080/hello是要等待3秒的,虽然我们可以用多线程的方式来解决,但是spring已经有这个注解了,@Async,表名这个方法是异步方法,spring会自动开启一个线程池来执行这个任务。

定时任务

spring也有相关注解:@Scheduled,@EnableScheduled(开启定时任务)
springboot----13.springboot与任务_第1张图片
定时任务表达式例子:
springboot----13.springboot与任务_第2张图片

邮件任务

导入邮件场景启动器:

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

配置邮件发送所需要的信息:
host:smtp服务器地址
password:授权码

spring.mail.host=smtp.qq.com
spring.mail.username=xxxxxxx@qq.com
spring.mail.password=xxxxxxx
spring.mail.properties.mail.smtp.ssl.enable=true
    @Autowired
    private JavaMailSenderImpl mailSender;

    /**
     * 发送简单邮件
     */
    @Test
    void fun1() {
     
        SimpleMailMessage message = new SimpleMailMessage();

        message.setSubject("我是标题"); //设置标题
        message.setText("我是内容"); //邮件内容
        message.setFrom("[email protected]"); //发件人
        message.setTo("[email protected]"); //收件人

        mailSender.send(message);
    }
    /**
     * 发送带附件的邮件
     */
    @Test
    public void fun2() throws Exception {
     
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);

        helper.setSubject("我是标题"); //设置标题
        helper.setText("我是内容"); //邮件内容
        helper.setFrom("[email protected]"); //发件人
        helper.setTo("[email protected]"); //收件人
        helper.addAttachment("readme.txt",new File("D:/spring.log"));

        mailSender.send(mimeMessage);
    }

springboot----13.springboot与任务_第3张图片

你可能感兴趣的:(springboot)