package com.itheima.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
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.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import java.time.Duration;
/**
* 自定义Redis配置类,进行序列化以及RedisTemplate设置
*/
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
/**
* 定制Redis API模板RedisTemplate
* @param redisConnectionFactory
* @return
*/
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
// 使用JSON格式序列化对象,对缓存数据key和value进行转换
Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
// 解决查询缓存转换异常的问题
ObjectMapper om = new ObjectMapper();
// 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
// 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jacksonSeial.setObjectMapper(om);
// 设置RedisTemplate模板API的序列化方式为JSON
template.setDefaultSerializer(jacksonSeial);
return template;
}
/**
* 定制Redis缓存管理器RedisCacheManager,实现自定义序列化并设置缓存时效
* @param redisConnectionFactory
* @return
*/
@Bean
public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
// 分别创建String和JSON格式序列化对象,对缓存数据key和value进行转换
RedisSerializer<String> strSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
// 解决查询缓存转换异常的问题
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jacksonSeial.setObjectMapper(om);
// 定制缓存数据序列化方式及时效
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofDays(7)) // 设置缓存有效期为1天
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(strSerializer))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jacksonSeial))
.disableCachingNullValues(); // 对空数据不进行缓存
RedisCacheManager cacheManager = RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(config).build();
return cacheManager;
}
}
第十章资源文件.zip
需积分: 0 175 浏览量
更新于2024-01-09
收藏 14.94MB ZIP 举报
在IT行业中,资源文件是开发过程中不可或缺的一部分,它们包含了应用程序运行所需的各类素材和配置信息。以"第十章资源文件.zip"为例,这个压缩包可能是一个教学材料或项目的一部分,涉及数据库脚本、后端代码以及前端资源。接下来,我们将详细讨论这些文件在IT开发中的作用。
1. **blog_system.sql**:
这个文件很可能是数据库脚本,用于创建或更新一个名为"blog_system"的数据库系统。SQL(Structured Query Language)是用于管理关系数据库的标准语言。在这个脚本中,可能包含了创建表、插入初始数据、定义索引、设置权限等操作。开发者通常会使用这样的脚本来快速初始化或恢复数据库状态,尤其是在进行软件部署或测试时。
2. **第十章后端配置com.itheima**:
"com.itheima"看起来像是Java编程中的包名,Java采用包来组织类,便于管理和重用代码。"第十章后端配置"提示这部分内容可能与后端服务器的配置相关。后端开发涉及到服务器端逻辑处理、数据库交互、业务逻辑实现等,可能包含Servlet、Spring框架、MyBatis等技术。这个包可能包含服务接口、控制器、模型、配置文件等,用于实现特定功能,比如用户认证、数据增删改查等。
3. **第十章前端资源resources**:
"resources"通常是前端项目的资源目录,包含HTML、CSS、JavaScript文件以及图片、字体等静态资源。前端开发是构建用户界面的部分,主要关注用户体验和交互。HTML定义页面结构,CSS负责样式设计,JavaScript则处理动态行为。资源文件夹中可能还有Vue、React或Angular等前端框架的组件、配置文件、图标和其他多媒体资源。这些资源协同工作,使得用户能够在浏览器中看到并交互应用的前端部分。
在学习或项目实践中,这些文件通常会按照一定的结构组织,以便于团队协作和维护。例如,数据库脚本可以用于快速搭建测试环境,后端代码用于处理业务逻辑并与数据库交互,前端资源则负责展示信息和接收用户输入。理解这些文件的作用并熟练掌握相关技术,对于提升IT专业技能至关重要。通过实践和学习,你可以更深入地了解如何将这些元素整合到一个完整的应用程序中。
old_saltedfish
- 粉丝: 1
- 资源: 1
最新资源
- matrixdb-4.8.13.enterprise-1.el7.x86_64.rpm
- 全自动批量建站快速养权重站系统【纯静态html站群版】:(GPT4.0自动根据关键词写文章+自动发布+自定义友链+自动文章内链+20%页面加提权词)
- 串联式、并联式、混联式混合动力系统simulink控制策略模型(串联式、并联式、混联式每个都是独立的需要单独说拿哪个,默认是混联式RB) 有基于逻辑门限值、状态机的规则控制策略(RB)、基于等效燃油
- 法码滋.exe法码滋2.exe法码滋3.exe
- python-geohash-0.8.5-cp38-cp38-win-amd64
- Matlab根据flac、pfc或其他软件导出的坐标及应力、位移数据再现云图 案例包括导出在flac6.0中导出位移的fish代码(也可以自己先准备软件导出的坐标数据及对应点的位移或应力数据,可根据需
- 拳皇97.exe拳皇972.exe拳皇973.exe
- 捕鱼达人1.exe捕鱼达人2.exe捕鱼达人3.exe
- 医疗骨折摄像检测29-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma数据集合集.rar
- ks滑块加密算法与源代码