当前位置:网站首页>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();
}
}
边栏推荐
猜你喜欢

被动收入:回归原始且安全的两种赚取方法

Toward fast, flexible, and robust low light image enhancement cvpr2022

视觉系统设计实例(halcon-winform)-10.PLC通讯

JS epidemic at home, learning can't stop, 7000 word long text to help you thoroughly understand the prototype and prototype chain

腾讯二面:@Bean 与 @Component 用在同一个类上,会怎么样?

Summary of basic knowledge of C language

SkyWalking分布式系统应用程序性能监控工具-中

如果我们是那晚负责修复 B 站崩了的开发人员

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

Differences among CPU, GPU and NPU
随机推荐
"Game engine light in light out" 4.1 unity shader and OpenGL shader
Getting started with DirectX
【云享读书会第13期】多媒体处理工具 FFmpeg 工具集
mysql保存数据提示:Out of range value for column错误
MySQL save data prompt: out of range value for column error
Lecture 4: Longest ascending substring
一篇文章看懂JS执行上下文
Unity3d learning note 10 - texture array
How to do well in enterprise system vulnerability assessment
Visual system design example (Halcon WinForm) -10. PLC communication
Failed to connect to ResourceManager
炒黄金开户平台有没有正规,安全的
Get the data of the first frame of unity's open camera
Dynamic programming - stock trading 5
于不确定中见“安全感” 沃尔沃2022年中问道
Arduino+ze08-ch2o formaldehyde module, output formaldehyde content
Slam overview Reading Note 4: a survey on deep learning for localization and mapping: towards the age of spatial 2020
Regular expressions: mailbox matching
Research on multi label patent classification based on pre training model
How to deploy open source Siyuan privately