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