Notas pessoais do Spring Boot de 0 a 10 - tarefas

Um, processamento assíncrono

  • @Async: Escrito antes do método de serviço, significa que esse método precisa ser processado de forma assíncrona
  • @EnableAsync: Escreva antes da classe de inicialização do Spring Boot para habilitar a função de processamento assíncrono

AsynService :

@Service
public class AsynService {
    
    

    @Async
    public void hello(){
    
    
        try {
    
    
            Thread.sleep(3000);
        } catch (InterruptedException e) {
    
    
            e.printStackTrace();
        }
        System.out.println("数据处理中");
    }
}

AsynController :

@RestController
public class AsynController {
    
    
    @Autowired
    AsynService asynService;

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

SpringBootTaskApplication :

@EnableAsync
@SpringBootApplication
public class SpringBootTaskApplication {
    
    

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

}

Originalmente, não havia processamento assíncrono +. Cada vez que você visita http://localhost:8080/hello, tem que esperar 3 segundos pelo resultado. Adicionado isso, o resultado em segundos

Duas tarefas cronometradas

  • @EnableScheduling: Antes de escrever na classe de inicialização do Spring Boot, ative a função de tarefa de cronometragem
  • @Scheduled: Usado antes do método na classe de serviço, usado para configurar tarefas de temporização
    • @Scheduled(cron = "xxx")Este xxx tem regras gramaticais
    • O valor do atributo cron é especificado como uma string. Esta string especifica 6 vezes, que sãoSegundos, minutos, horas, dia do mês, mês, dia da semana, Cada período de tempo é separado por um espaço. Por exemplo
      "0 * * * * 1-7", significa que durante qualquer período de tempo de segunda a domingo, quando o segundo for 0, a função será executada uma vez

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

2. Alguns exemplos

  • @Scheduled(cron = "0,1,2,3,4 * * * * 1-5"): De segunda a sexta, quando o segundo for 0, 1, 2, 3, 4, execute o código uma vez
  • @Scheduled(cron = "0-5 * * * * 1,2,3,4,5"): O mesmo que acima
  • @Scheduled(cron = "0/4 * * * * 1,2,3,4,5"): De segunda a sexta, quando o segundo for 0, será executado a cada 4 segundos
  • 0 0/5 14,18 ? * ?: Todos os dias às 14 horas, 18 horas, a cada 5 minutos
  • 0 0 2 ? * 6L: Executado às 2h do último sábado de cada mês

Três, envie e-mail

Spring boot vem com a função de enviar caixas de correio, eu não esperava

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

1. Correio simples

application.yml :

spring:
  mail:
    username: [email protected]
    password: xxxxxxxxxxxxxxx(这个密码,下面有说是什么)
    host: smtp.qq.com
    profiles:
      mail:
        smtp:
          ssl:
            enable: true
  • A senha não é sua senha QQ, mas
    Insira a descrição da imagem aqui
    este código de autorização

Teste na classe de teste:

@SpringBootTest
class SpringBootTaskApplicationTests {
    
    

    @Autowired
    JavaMailSenderImpl mailSender;

    //简单的发送邮件
    @Test
    void contextLoads() {
    
    
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("今晚打老虎");//发送邮件标题
        message.setText("多谢乌蝇哥");//正文
        message.setTo("[email protected]");//发给谁
        message.setFrom("[email protected]");//发送者
        this.mailSender.send(message);
    }

}

Insira a descrição da imagem aqui

2. Correio complexo

    //复杂的邮件
    @Test
    public void test02() throws Exception {
    
    
        MimeMessage mimeMessage = this.mailSender.createMimeMessage();//要用MimeMessage类型
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);//然后用helper操作
        helper.setSubject("今晚打老虎");//标题
        helper.setText("<b style='color:red'>多谢乌蝇哥</b>", true);//内容,第二个参数为true就开启html格式
        helper.setTo("[email protected]");//发给谁
        helper.setFrom("[email protected]");//发送者
        helper.addAttachment("1.jpg", new File("D:\\壁纸\\59e06a3543101.png"));
        helper.addAttachment("2.jpg", new File("D:\\壁纸\\336-160G2110S6.png"));
        this.mailSender.send(mimeMessage);
    }

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/yi742891270/article/details/107793865
Recomendado
Clasificación