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
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 segundos0 0/5 14,18 ? * ?
: Todos os dias às 14 horas, 18 horas, a cada 5 minutos0 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
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);
}
}
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);
}