目录
前述
依赖引入
Redis集成
配置文件
Redis配置类
测试Redis
MongoDB 集成
前述
前面的文章已经对关系型数据库进行了集成,那么本篇针对非关系型数据库进行一个集成。Redis和MongoDB是目前来说比较流行的非关系型数据库,在一般的系统中普遍承担日志记录、登录KEY记录、事务锁、缓存数据等的处理,在大型的WEB2系统中应用的会更加广泛也更加的深入,在本次的系统集成中,只针对基础的集成、存储和取值进行一个集成。
依赖引入
org.springframework.boot
spring-boot-starter-data-redis
org.springframework.boot
spring-boot-starter-data-mongodb
Redis集成
配置文件
依赖引入之后,需要在yml文件中进行配置,配置数据如下:
spring:
redis:
host: 127.0.0.1 # Redis服务器地址
port: 6379 # Redis 服务器连接端口
password: # 连接密码,有设置密码则必填,未设置则不填
database: 6 # 使用的数据库索引
jedis:
pool:
max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 0 # 连接池中的最小空闲连接
timeout: 2000 # 连接超时时间(毫秒)
Redis配置类
创建Redis配置类,RedisConfiguration.class,此配置类创建对象RedisTemplate 来对Redis进行各种操作,它支持所有的Redis的原生API。还有一种StringRedisTemplate也输入Redis的工具方法,但是StringRedisTemplate的局限性很大,作为RedisTemplate的子类,它仅支持Key和Value都是String的操作。
package com.dgh.micro.common.config.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.cache.annotation.EnableCaching;
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
@EnableCaching
public class RedisConfiguration {
@Bean
public RedisTemplate
测试Redis
创建TestController.java用于web访问测试。通过@Resource注解自动注入RedisTemplate,在方法中直接使用 redisTemplate.opsForValue().set("key", "value"); 进行数据的存储,使用 redisTemplate.opsForValue().get("key"); 进行数据的查询。
@PostMapping("testRedisTemplate")
@ApiOperation("测试redis")
public void testRedisTemplate() {
redisTemplate.opsForValue().set("key", "value>>1");
Object redisValue = redisTemplate.opsForValue().get("key");
log.info("redisTemplate取出的值为:{}", redisValue);
}
启动项目,通过PostMan或者swagger直接调用,接口,查看控制台的日志输出:
通过控制台日志可以看到,存入的数据已经能够正常的读取了。
MongoDB 集成 配置文件
在yml中进行MongoDB的基础配置【地址、端口、数据库、密码等】
spring:
data:
mongodb:
host: 127.0.0.1 # MongoDB服务器地址
port: 27017 # MongoDB服务器端口
database: micro-demo # 数据库名称
password: # 连接密码
测试MongoDB
MongoDB在使用时不需要创建另外的配置类,直接使用注入MongoTemplate即可使用。
创建测试类SysLog.java ,注意在创建MongoDB的实体类时需要使用注解 @document("sys_log"); 注明其是一个MongoDB的集合文件,在存储和查询时MongoDB也是通过此注解来定位具体存储到哪个集合下面。同时通过 @Id 注解来表示其数据主键也可以不创建主键字段,通过MongoDB自己生成;通过@Field(value = "") 注解标识字段别名。
package com.dgh.micro.model.vo.mongo;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.document;
import org.springframework.data.mongodb.core.mapping.Field;
@Data
@document("sys_log")
public class SysLog {
@Field(value = "logName")
private String logName;
@Field(value = "logContent")
private String logContent;
@Field(value = "appName")
private String appName;
@Field(value = "requestUrl")
private String requestUrl;
@Field(value = "requestParams")
private String requestParams;
@Field(value = "requestResult")
private String requestResult;
@Field(value = "serverIp")
private String serverIp;
@Field(value = "clientIp")
private String clientIp;
@Field(value = "userId")
private Long userId;
@Field(value = "httpMethod")
private String httpMethod;
@Field(value = "clientBrowser")
private String clientBrowser;
@Field(value = "clientOs")
private String clientOs;
}
在TestController.java中编写方法 testMongoDBTemplate() 通 mongoTemplate.insert(T); 进行数据的插入,通过 mongoTemplate.findOne(Query query, Class
@Resource
MongoTemplate mongoTemplate;
@PostMapping("testMongoDBTemplate")
@ApiOperation("测试mongo")
public void testMongoDBTemplate() {
String uuid = UUID.randomUUID().toString();
SysLog sysLog = new SysLog();
sysLog.setClientIp(uuid);
mongoTemplate.insert(sysLog);
log.info("生成的uuid为:{}", uuid);
Query query = new Query();
query.addCriteria(Criteria.where("clientIp").is(uuid));
SysLog one = mongoTemplate.findOne(query, SysLog.class);
log.info("mongoTemplate取出的值为:{}", JSONUtil.toJsonStr(one));
}
启动后通过PostMan或者swagger调试,会发现在控制台日志中会输出当前存入的数据。
至此,Redis与MongoDB的简单集成结束,后续在实例会具体用到。下一章将集成RocketMq



