提交 93ad30e1 作者: zgz

跨域处理

上级 26950382
package com.zzsn.thinktank.config;
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.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/**
* @author lkg
*/
@Configuration
public class RedisConfig {
@Bean(name = "redisTemplate")
public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<Object,Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
//设置序列化Key的实例化对象
template.setKeySerializer(new StringRedisSerializer());
//设置序列化Value的实例化对象
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
//设置序列化Key的实例化对象
template.setHashKeySerializer(new GenericJackson2JsonRedisSerializer());
//设置序列化Key的实例化对象
template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
template.afterPropertiesSet();
return template;
}
}
package com.zzsn.thinktank.config;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.serializer.ValueFilter;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import com.zzsn.thinktank.config.interceptor.DataPermitInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 整合 fastjson
* @author yanxin
* @date 2022年6月20日19:07:31
*/
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
//注入自定义拦截器
@Resource
DataPermitInterceptor dataPermitInterceptor;
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializeFilters(new ValueFilter() {
@Override
public Object process(Object object, String name, Object value) {
if (value == null){
//如果需要返回null值,则此处返回""即可
return "";
}
if (value instanceof Date){
return DateUtil.format((Date) value,"yyyy-MM-dd HH:mm:ss");
}
return value;
}
});
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
List<MediaType> mediaTypes = new ArrayList<>();
mediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
fastJsonHttpMessageConverter.setSupportedMediaTypes(mediaTypes);
converters.add(fastJsonHttpMessageConverter);
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
/* registry.addInterceptor(dataPermitInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/LoginController/**", "/error");//放行路径
*/
WebMvcConfigurer.super.addInterceptors(registry);
}
@Override
public void addCorsMappings(CorsRegistry registry){
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*");
}
}
\ No newline at end of file
package com.zzsn.thinktank.config.interceptor;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 数据权限拦截器
*
*
*/
@Component
@Slf4j
public class DataPermitInterceptor implements HandlerInterceptor {
final String METHOD_GET="get";
//进入controller之前执行的
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if(METHOD_GET.equals(request.getMethod().toLowerCase()))
{
log.info("参数装配之前执行的,{},{}", JSON.toJSONString(request.getParameterNames()));
log.info("参数装配之后执行的,{},{}", JSON.toJSONString(request.getParameterNames()));
}else {
log.info("参数装配之前执行的,{}", JSON.toJSONString(request.getParameterMap()));
request.getParameterMap().put("permit",new String[]{"权限数据"});
log.info("参数装配之后执行的,{}", JSON.toJSONString(request.getParameterMap()));
}
return HandlerInterceptor.super.preHandle(request, response, handler);
}
}
package com.zzsn.thinktank.config.mybatisplus;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new DateTime(), metaObject);
this.setFieldValByName("updateTime", new DateTime(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new DateTime(), metaObject);
}
}
package com.zzsn.thinktank.config.mybatisplus;
import com.baomidou.mybatisplus.extension.incrementer.OracleKeyGenerator;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* @author kongliufeng
* @Description mybatis-plus配置文件
* @create 2021-03-20 17:46
* @Version 1.0
*/
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
/**
* mybatis-plus分页配置
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 向MyBatis-Plus的过滤器链中添加分页拦截器,需要设置数据库类型(主要用于分页方言)
// 使用空参构造,自动匹配连接数据库类型
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
/**
* Sequence主键自增
*
* @return 返回oracle自增类
* @author zhenggc
*/
@Bean
public OracleKeyGenerator oracleKeyGenerator(){
return new OracleKeyGenerator();
}
@Bean
public MyMetaObjectHandler myMetaObjectHandler() {
return new MyMetaObjectHandler();
}
}
package com.zzsn.thinktank.config.threadPool;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.ThreadPoolExecutor;
@Configuration
public class ExecutorConfig {
@Bean
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(20); // Set core pool size
executor.setMaxPoolSize(50); // Set maximum pool size
executor.setQueueCapacity(100); // Set queue capacity
executor.setKeepAliveSeconds(60); // Set keep-alive time
executor.setThreadNamePrefix("year-report-dataHandler-"); // Set thread name prefix
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); // Set rejection policy
return executor;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论