SpringBoot-异步-邮件-定时

390 阅读1分钟

异步

  1. 在Springboot程序入口SpringBootApplication类上添加@EnableAsync开启异步功能

  2. 在需要异步进行的方法上添加@Async,SpringBoot会自动为其创造线程

邮件

导入依赖

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

修改配置文件

在MailSenderAutoConfiguration中有@EnableConfigurationProperties(MailProperties.class)

@Configuration(proxyBeanMethods = false)
@ConditionalOnClass({ MimeMessage.class, MimeType.class, MailSender.class })
@ConditionalOnMissingBean(MailSender.class)
@Conditional(MailSenderCondition.class)
//属性文件
@EnableConfigurationProperties(MailProperties.class)
@Import({ MailSenderJndiConfiguration.class, MailSenderPropertiesConfiguration.class })
public class MailSenderAutoConfiguration {
}

点进MailProperties可以看到@ConfigurationProperties(prefix = "spring.mail"),以及其中的一些属性

@ConfigurationProperties(prefix = "spring.mail")
public class MailProperties {}

因此我们可以在application.properties设置一些Mail的属性

spring.mail.username=xxxxx@qq.com
spring.mail.password=xxxxxxxxxxxxxx
spring.mail.host=smtp.qq.com
# 加密验证
spring.mail.properties.mail.smtp.ssl.enable=true

实例

class DemoApplicationTests {
	@Autowired
	JavaMailSenderImpl MailSender;
	@Test
	void contextLoads() {
		SimpleMailMessage sm = new SimpleMailMessage();
		sm.setTo("xxxxx@qq.com");
		sm.setFrom("xxx@qq.com");
//		sm.setFrom("xxx@qq.com");
		sm.setText("test text");
		sm.setSubject("test subject");
		MailSender.send(sm);
	}
	@Test
	void contextLoads2() throws MessagingException {
		//复杂邮件
		MimeMessage m= MailSender.createMimeMessage();
		//组装,true代表支持多文件
		MimeMessageHelper helper=new MimeMessageHelper(m,true);
//		MimeMailMessage sm=new MimeMailMessage(m);
		helper.setTo("xxxx@qq.com");
		helper.setFrom("xxx@qq.com");
//		helper.setFrom("xxx@qq.com");
		//true 代表开启html,p标签会被识别
		helper.setText("<p style='color:red'>test text2</p>",true);
		helper.setSubject("test subject2");
		helper.addAttachment("1.png",new File("D:\\Desktop\\Springboot\\SpringBoot-10\\src\\main\\resources\\static\\1.png"));
		MailSender.send(m);
	}

}

定时

  1. 添加@EnableScheduling开启定时功能
@EnableScheduling
@SpringBootApplication
public class DemoApplication {

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

}

  1. 在方法上 添加@Scheduled,即可被识别为定时任务
@Service
public class SchedulingService {
    //秒 分 时 日 月 星期
    //每天的21:44:31执行一次
    @Scheduled(cron = "30 44 21 * * ?")
    public void hello(){
        System.out.println("hello");
    }
}