当前位置:网站首页>internship:其他配置类的编写
internship:其他配置类的编写
2022-07-27 13:57:00 【ahyo】
整体的项目架构相比之前写的demo多了其他的配置,比如涉及硬件,需要编写有关于硬件的代码;涉及遥感获取地理信息需要编写引用高德api来实现;此外还有其他一些零零碎碎需要编写的功能,使整个项目体系更为完整。但是唯一不变的还是 controller service及其对应的实现类 之后对应另一个service层 编写相应的mapper,最开始的都是打框架。
RedisConfig:
/** * redis配置 @EnableCaching @Configuration public class RedisConfig extends CachingConfigurerSupport { /** * 生成key的策略 */
@Bean
@Override
public KeyGenerator keyGenerator() {
return (target, method, params) -> {
StringBuilder sb = new StringBuilder();
sb.append(method.getName());
for (Object obj : params) {
sb.append("_").append(obj.toString());
}
return sb.toString();
};
}
/** * 缓存管理器 */
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = jackson2JsonRedisSerializer();
RedisCacheConfiguration redisCacheConfiguration =
RedisCacheConfiguration.defaultCacheConfig()
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))
.entryTtl(Duration.ofHours(1));
return RedisCacheManager
.builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory))
.cacheDefaults(redisCacheConfiguration).build();
}
/** * RedisTemplate配置 */
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = jackson2JsonRedisSerializer();
//序列化 value 时使用此序列化方法
template.setValueSerializer(jackson2JsonRedisSerializer);
template.setHashValueSerializer(jackson2JsonRedisSerializer);
// 序列化 key 时
StringRedisSerializer srs = new StringRedisSerializer();
template.setKeySerializer(srs);
template.setHashKeySerializer(srs);
template.afterPropertiesSet();
return template;
}
public Jackson2JsonRedisSerializer jackson2JsonRedisSerializer() {
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
jackson2JsonRedisSerializer.setObjectMapper(new ObjectMapper()
.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY)
//解决jackson2无法反序列化LocalDate、 LocalDateTime的问题
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.registerModule(new JavaTimeModule())
//设置存入缓存时按具体的类型存入
.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,
ObjectMapper.DefaultTyping.NON_FINAL,
JsonTypeInfo.As.WRAPPER_ARRAY));
return jackson2JsonRedisSerializer;
}
}
WebMvcConfigurer配置类其实是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制,可以自定义一些Handler,Interceptor,ViewResolver,MessageConverter。基于java-based方式的spring mvc配置,需要创建一个配置类并实现WebMvcConfigurer 接口;
webconfig:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Value("${server.file-upload-path}")
private String filePath;
/** * * @param registry */
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("*")
.allowedHeaders("*")
.allowedMethods("*")
.allowCredentials(true);
}
/** * 静态路径 * @param registry */
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//在默认"/**"静态文件映射上添加"file: filePath/"
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/", "/","file:" + filePath);
}
/** * 文件上传临时目录 * @return */
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
String tmpPath = filePath + File.separator + "temp" + File.separator;
File file = new File(tmpPath);
if (!file.exists()) {
file.mkdirs();
}
factory.setLocation(tmpPath);
return factory.createMultipartConfig();
}
}
边栏推荐
- Understand the evolution of redis architecture in one article
- 一篇文章看懂JS执行上下文
- 大家最想要的,最全的C语言知识点总结,还不赶紧学习
- Basic exercises of C language
- [ManageEngine] what is Siem
- 通过VN1630/VN7640的I/O功能来确认电源设置电压的时间精确度
- 【医疗行业】DICOM converter Tools
- Is there a regular and safe account opening platform for gold speculation
- Rtl8762dk environment construction (I)
- HDU4565 So Easy! [matrix multiplication] [derivation]
猜你喜欢

2022年中国网络视频市场年度综合分析

Construction of knowledge map of financial securities and discovery of related stocks from the perspective of knowledge relevance

Lecture 4: Longest ascending substring

CPU、GPU、NPU的区别

什么是Tor?Tor浏览器更新有什么用?

Document translation__ Tvreg V2: variational imaging method for denoising, deconvolution, repair and segmentation (part)

Simple encapsulation steps of request data request of uniapp

Slam overview Reading Note 7: visual and visual intangible slam: state of the art, classification, and empirical 2021
![Detailed explanation of Telnet remote login AAA mode [Huawei ENSP]](/img/48/dd0fa3c494c45f604b7a93c707b808.png)
Detailed explanation of Telnet remote login AAA mode [Huawei ENSP]

巨形象的图解 SQL
随机推荐
Construction of knowledge map of financial securities and discovery of related stocks from the perspective of knowledge relevance
Get the data of the first frame of unity's open camera
什么是Tor?Tor浏览器更新有什么用?
【WORK】关于技术架构
Nokia's patent business was hit for the first time, and Chinese enterprises are not so easy to knead
How to do well in enterprise system vulnerability assessment
微信小程序实现音乐搜索页面
[ManageEngine] what is Siem
How to help enterprises optimize office management
Timestamp of AAC, h264, etc
如果我们是那晚负责修复 B 站崩了的开发人员
Detailed explanation of Telnet remote login AAA mode [Huawei ENSP]
mysql保存数据提示:Out of range value for column错误
Summary of basic knowledge of C language
Differences among CPU, GPU and NPU
PROFINET simulator tutorial
np. Usage and difference of range() and range()
aac 和 h264等的时间戳
Slam overview Reading Note 7: visual and visual intangible slam: state of the art, classification, and empirical 2021
Hdu4496 d-city [concurrent search]