Springboot 整合 Redis
// 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
// 文件配置
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<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> 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;
}
}
邮件发送
开启邮箱服务,取得受权码
// 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
// 配置文件
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("发送胜利");
}
}