Springboot整合Redis
//导入依赖
org.springframework.boot
spring-boot-starter-data-redis
//文件配置
spring:
redis:
host: 127.0.0.1
port: 6379
password: root
//编写一个自己的RedisTemplate
package com.shuaikb.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
//Jackson ObjectMapper 中的 enableDefaultTyping 方法由于安全原因,从 2.10.0 开始标记为过期,建议用 activateDefaultTyping 方法代替
//om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
//key 采用的String 的序列化方式
template.setKeySerializer(stringRedisSerializer);
//hashde key 也采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
//value 序列化方式采用jackson
template.setValueSerializer(jackson2JsonRedisSerializer);
//hash 的 value序列化方式采用jackson
template.setHashKeySerializer(jackson2JsonRedisSerializer);
//初始化配置
template.afterPropertiesSet();
return template;
}
}
邮件发送
开启邮箱服务,获得授权码
//导入依赖
org.springframework.boot
spring-boot-starter-mail
//配置文件
spring:
mail:
# 配置 SMTP 服务器地址
host: smtp.qq.com
# 发送者邮箱
username: ***********@qq.com
# 配置密码,注意不是真正的密码,而是刚刚申请到的授权码
password: ******************
# 端口号465或587
port: 465
# 默认的邮件编码为UTF-8
default-encoding: UTF-8
# 配置SSL 加密工厂
properties:
mail:
smtp:
ssl:
enable: true
#表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误
debug: true
//发送过程
@Autowired
JavaMailSender javaMailSender;
public void mali(){
// 构建一个邮件对象
SimpleMailMessage message = new SimpleMailMessage();
// 设置邮件主题
message.setSubject("这是一封测试邮件");
// 设置邮件发送者,这个跟application.yml中设置的要一致
message.setFrom("********@qq.com");
// 设置邮件接收者,可以有多个接收者,中间用逗号隔开,以下类似
message.setTo("********@qq.com");
// 设置邮件的正文
message.setText("邮件正文");
// 发送邮件
javaMailSender.send(message);
System.out.println("发送成功");
}
设置时间过期验证码
@Component
public class EmailSend {
@Autowired
JavaMailSender javaMailSender;
String[] codees={"0","1","2","3","4","5","6","7","8","9"};
@Autowired
RedisUtils redisUtils;
public void send(String toEmail,String subject){
// 构建一个邮件对象
SimpleMailMessage message = new SimpleMailMessage();
// 设置邮件主题
message.setSubject(subject);
// 设置邮件发送者,这个跟application.yml中设置的要一致
message.setFrom("********@qq.com");
// 设置邮件接收者,可以有多个接收者,中间用逗号隔开,以下类似
message.setTo(toEmail);
// 设置邮件的正文
String code="";
for(int i=0;i<6;i++){
int j=(int)(Math.random()*10);
code+=codees[j];
}
message.setText(code);
// 发送邮件
javaMailSender.send(message);
redisUtils.set(toEmail,code,300);
System.out.println("发送成功");
}
}