Notas personales de Spring Boot de 0 a aprender 10 - tareas

Uno, procesamiento asincrónico

  • @Async: Escrito antes del método de servicio, significa que este método debe procesarse de forma asincrónica
  • @EnableAsync: Escriba antes de la clase de inicio de Spring Boot para habilitar la función de procesamiento asincrónico

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, no había + procesamiento asincrónico. Cada vez que visita http://localhost:8080/hello, debe esperar 3 segundos para obtener el resultado. Agregó esto, el resultado en segundos.

Dos tareas cronometradas

  • @EnableScheduling: Antes de escribir en la clase de inicio de Spring Boot, active la función de tarea de sincronización
  • @Scheduled: Se usa antes del método en la clase de servicio, se usa para configurar tareas de tiempo
    • @Scheduled(cron = "xxx")Este xxx tiene reglas gramaticales
    • El valor de atributo de cron se especifica como una cadena. Esta cadena especifica 6 veces, que sonSegundos, minutos, horas, día del mes, mes, día de la semana, Cada período de tiempo está separado por un espacio. Por ejemplo
      "0 * * * * 1-7", significa que durante cualquier período de tiempo de lunes a domingo, cuando el segundo es 0, la función se ejecutará una vez

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2. Algunos ejemplos

  • @Scheduled(cron = "0,1,2,3,4 * * * * 1-5"): De lunes a viernes, cuando el segundo sea 0, 1, 2, 3, 4, ejecute el código una vez
  • @Scheduled(cron = "0-5 * * * * 1,2,3,4,5"): Lo mismo que arriba
  • @Scheduled(cron = "0/4 * * * * 1,2,3,4,5"): De lunes a viernes, cuando el segundo sea 0, se ejecutará cada 4 segundos.
  • 0 0/5 14,18 ? * ?: Todos los días a las 14 horas, a las 18 horas, cada 5 minutos
  • 0 0 2 ? * 6L: Ejecutado a las 2 a.m. del último sábado de cada mes

Tres, envía un correo electrónico

Spring Boot viene con la función de enviar buzones de correo, no lo esperaba

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

1. Correo simple

application.yml:

spring:
  mail:
    username: [email protected]
    password: xxxxxxxxxxxxxxx(这个密码,下面有说是什么)
    host: smtp.qq.com
    profiles:
      mail:
        smtp:
          ssl:
            enable: true
  • La contraseña no es su contraseña de QQ, sino
    Inserte la descripción de la imagen aquí
    este código de autorización

Prueba en la clase de prueba:

@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);
    }

}

Inserte la descripción de la imagen aquí

2. Correo complejo

    //复杂的邮件
    @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);
    }

Inserte la descripción de la imagen aquí

Supongo que te gusta

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