springboot任务

定时任务

1、主方法(springbootapplication)中添加注释@EnableScheduling //开启定时任务的注解

@SpringBootApplication
@EnableScheduling //开启定时功能
public class SpringbootCronApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootCronApplication.class, args);
    }
}

2、Service层(@Service)方法上添加@Scheduled(cron = "0 13 10 * * ?") //指定10点13分整执行此代码,cron格式:秒 分 时 日 月 周几 ,其中,周中0和7均表示周日

@Service
public class ScheduleService {

    @Scheduled(cron = "0 53 16 * * ?") //秒 分 时 日 月 周
    public void hello(){
        System.out.println("执行中....");
    }
}

cron表达式例:

a:0 13 10 * * ? //表示每天10点13分整执行;

b: 30 0/5 10,18 * * ? //表示每天10点和18点,每隔5分钟执行一次

详细可参照:https://www.cnblogs.com/yanghj010/p/10875151.html

 

异步任务

1、service层(有@Service注释的类)要异步执行的方法上添加@Async注解,表示这是一个异步方法

@Service
public class AsyncService {

    @Async //告诉spring这是一个异步方法
    public void hello() throws InterruptedException {
        Thread.sleep(3000);
        System.out.printf("数据正在处理.....");
    }
}

2、在主方法apringbootapplication类上开启异步(添加@EnableAsync注释,告诉spring这是一个异步的方法)

@SpringBootApplication
@EnableAsync //开启异步调用功能
public class Springboot09AsyncApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot09AsyncApplication.class, args);
    }
}

3、在controller层注入(@Autowired)步骤1的类,然后直接调用它里面异步的方法即可

@RestController
public class AsyncController {
    @Autowired
    AsyncService asyncService;

    @RequestMapping("/hello")
    public String async() throws InterruptedException {
        asyncService.hello();
        return "ok";
    }
}

邮件任务

1、pom中添加依赖:

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

2、配置文件中配置邮箱相关信息:

spring.mail.username=XXXXX@qq.com
spring.mail.password=XXXXXXXXXXX
spring.mail.host=smtp.qq.com
#开启加密验证,只有QQ需要,其他邮箱不需要
spring.mail.properties.mail.smtp.ssl.enable=true

3、测试类中注入JavaMailSenderImpl类,直接调用里面的方法即可。代码示例:

@Autowired
    JavaMailSenderImpl mailSender;

    @Test
    void contextLoads() {
        //简单的邮件
        SimpleMailMessage mailMessage= new SimpleMailMessage();
        mailMessage.setSubject("test标题");
        mailMessage.setText("文本内容测试");
        mailMessage.setTo("XXXXXXX@qq.com"); //邮件接收者
        mailMessage.setFrom("XXXXXXX@qq.com"); //邮件发送者
        mailSender.send(mailMessage);
    }
    @Test
    void contextLoads2() throws MessagingException {
        //复杂的邮件
        MimeMessage mailMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mailMessage,true); //true表示开启支持多文件
        helper.setSubject("邮件标题");
        helper.setText("<p style='color:red'>邮件内容文本</p>",true); //true表示是否支付解析
        //附件
        helper.addAttachment("1.jpeg",new File("/Users/apple/Desktop/1.jpeg"));
        helper.addAttachment("2.jpeg",new File("/Users/apple/Desktop/1.jpeg"));
        helper.setTo("XXXXXXX@qq.com");
        helper.setFrom("XXXXXXX@qq.com");
        mailSender.send(mailMessage);
    }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值