springboot整合Redis//导入依靠org.springframework.bootspring-boot-starter-data-redis//文件配置spring:redis:host:127.0.0.1port:6379password:root//编写一个自己的RedisTemplatepackagecom.shuaikb.config;importcom.fasterxml.jackson.annotation.JsonAutoDetect;importcom.fasterxml.jackson.annotation.PropertyAccessor;importcom.fasterxml.jackson.databind.ObjectMapper;导入com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;导入org.springframework.context.annotation.Bean;导入org.springframework.context.annotation.Configuration;导入org.springframework.data.redis.connection.RedisConnectionFactory;导入org.springframework.data.redis.core.RedisTemplate;导入org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;导入org.springframework.data.redis.serializer.StringRedisSerializer;@配置publicclassRedisConfig{@BeanpublicRedisTemplateredisTemplate(RedisConnectionFactoryredisConnectionFactory){RedisTemplatetemplate=newRedisTemplate();template.setConnectionFactory(redisConnectionFactory);Jackson2JsonRedisSerializerjackson2JsonRedisSerializer=newJackson2JsonRedisSerializer(Object.class);ObjectMapperom=newObjectMapper();om.setVisibility(PropertyAccessor.ALL,JsonAutoDetect.Visibility.ANY);//JacksonObjectMapper中的enableDefaultTyping方法基于安全原因,从2.10.0开始标记为过期,建议使用activateDefaultTyping方法替代//om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);StringRedisSerializerstringRedisSerializer=newStringRedisSerializer();//key采用String序列化方式template.setKeySerializer(stringRedisSerializer);//hashdekey同样采用String序列化方式template.setHashKeySerializer(stringRedisSerializer);//值序列化方式采用jacksontemplate.setValueSerializer(jackson2JsonRedisSerializer);//hash的值序列化方式采用jacksontemplate.setHashKeySerializer(jackson2JsonRedisSerializer);//初始化配置template.afterPropertiesSet();返回模板;}}发送邮件开启邮件服务并获取授权码//引入依赖org.springframework.bootspring-boot-starter-mail//配置文件spring:mail:#配置SMTP服务器地址host:smtp.qq.com#发送用户邮箱username:*************@qq.com#配置密码,注意不是真正的密码,而是你刚才申请的授权码-8default-encoding:UTF-8#配置SSL加密工厂属性:mail:smtp:ssl:enable:true#表示开启DEBUG模式,这样邮件发送过程的日志会打印在控制台,方便排查问题debug:true//发送过程@AutowiredJavaMailSenderjavaMailSender;publicvoidmali(){//构建邮件对象SimpleMailMessagemessage=newSimpleMailMessage();//设置邮件主题message.setSubject("Thisisatestemail");//设置邮件发件人,与application.yml中的设置保持一致message.setFrom("*********@qq.com");//设置邮件收件人,收件人可以有多个,用逗号隔开,下面类似message.setTo("********@qq.com");//设置邮件的文本message.setText("Mailtext");//发送邮件javaMailSender.send(message);System.out.println("发送成功");}设置过期时间验证码@ComponentpublicclassEmailSend{@AutowiredJavaMailSenderjavaMailSender;字符串[]代码={“0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”};@AutowiredRedisUtilsredisUtils;publicvoidsend(StringtoEmail,Stringsubject){//构建邮件对象SimpleMailMessagemessage=newSimpleMailMessage();//设置邮件主题message.setSubject(主题);//设置邮件发件人,与application.yml中的设置保持一致message.setFrom("********@qq.com");//设置邮件收件人,可以有多个收件人,用逗号隔开,下面类似message.setTo(toEmail);//设置电子邮件的文本Stringcode="";for(inti=0;i<6;i++){intj=(int)(Math.random()*10);code+=codees[j];}message.setText(代码);//发送邮件javaMailSender.send(message);redisUtils.set(toEmail,code,300);System.out.println("发送成功");}}