SpringBoot在项目中基本配置设置

1、新增过滤器

(1)配置

@WebFilter(filterName = "corsFilter")
public class CorsFilter extends OncePerRequestFilter {@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {response.setHeader("Access-Control-Allow-Origin", "*");response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT");response.setHeader("Access-Control-Max-Age", "3600");response.setHeader("Access-Control-Allow-Headers", "DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Auth-Token");chain.doFilter(request, response);}
}

(2)在启动类中声名,启动过滤器

@Bean
public FilterRegistrationBean indexFilterRegistration(){FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new CorsFilter());filterRegistrationBean.addUrlPatterns("/*");return filterRegistrationBean;
}

  

2、集成Swagger

(1)新增配置

@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket userApi() {return new Docket(DocumentationType.SWAGGER_2).select()  // 选择那些路径和api会生成document.apis(RequestHandlerSelectors.basePackage("controller层地址")).paths(PathSelectors.any()) // 对所有路径进行监控
                .build().apiInfo(userInfo());}private ApiInfo userInfo() {return new ApiInfoBuilder().title("测试").description("测试").version("1.0.0").license("").build();}

(2)在启动类上新加声名

@EnableCaching
@EnableSwagger2

3、线程池配置
@Configuration
public class ThreadPoolConfig {@BeanThreadPoolExecutorFactoryBean executorServiceFactory() {ThreadPoolExecutorFactoryBean factory = new ThreadPoolExecutorFactoryBean();factory.setThreadNamePrefix("query");factory.setMaxPoolSize(100);factory.setCorePoolSize(20);factory.setQueueCapacity(10000);return factory;}@Primary@BeanExecutorService executorService() throws Exception {return executorServiceFactory().getObject();}
}

4、拦截器

@Configuration
@EnableWebMvc
@ComponentScan
public class WebConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware {private ApplicationContext applicationContext;@AutowiredAuthControl authControl;public WebConfig(){super();}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");super.addResourceHandlers(registry);}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext = applicationContext;}@Overridepublic void addInterceptors(InterceptorRegistry registry) {//登录拦截规则:除了login,其他都拦截判断/swagger-resources/configuration/uiregistry.addInterceptor(authControl).addPathPatterns("/**").excludePathPatterns("/user/login/**","/user/notice/index","/user/info/noticeDetail","/swagger-ui.html","/configuration/**","/swagger-resources/**","/v2/**","/headLine/**","/es/**","/**/*.js","/**/*.css","/**/*.svg","/**/*.ttf","/**/*.woff","/**/*.woff2","/**/*.png","/**/*.jpg","/**/*.gif");super.addInterceptors(registry);}}


@Component
public class AuthControl extends HandlerInterceptorAdapter {
@Autowired
private AdminProperties props;

@Autowired
private TokenManager tokenManager;

@Autowired
private UserService userService;

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");


if (!props.isEnableAuthControl()) {
initTestData();
return true;
}

URI uri;
try {
uri = new URI(request.getRequestURI());
} catch (URISyntaxException e) {
throw new ServletException(e);
}

try {
CheckResult result = checkAuthority(request, uri.getPath());
if (result.getResult()) {
return true;
}
unauthorized(response, result.getErrorMsg());
} catch (Exception e) {
throw new ServletException(e);
}
return false;
}

private void unauthorized(HttpServletResponse response, String msg) throws IOException {
ObjectMapper om = new ObjectMapper();
response.getWriter().write(om.writeValueAsString(ResponseUtil.error(msg ==null ? "token登录失效" : msg)));
}

private CheckResult checkAuthority(HttpServletRequest request, String path) throws NoSuchAlgorithmException, java.security.SignatureException, InvalidKeySpecException {
CheckResult checkResult = new CheckResult();
// 1.验证X-Auth-Token
String tokenStr = request.getHeader("X-Auth-Token");
if (tokenStr == null) {
return checkResult.setErrorMsg("认证失败,缺少X-Auth-Token");
}
Token token;
try {
token = tokenManager.decodeTerminalToken(tokenStr);
...
    ...
    ...
} catch (ExpiredJwtException e) {
return checkResult.setErrorMsg("认证失败,token已过期,请重新登录");
} catch (SignatureException e) {
return checkResult.setErrorMsg("认证失败,非法的token");
} catch (Exception e) {
return checkResult.setErrorMsg("执行失败");
}
return checkResult.setResult(true);
}
 

 5、redis配置

@Configuration
public class RedisConfig {@Autowiredprivate RedisTemplate redisTemplate;@Beanpublic RedisTemplate redisTemplateInit(){//设置序列化key的实例化对象redisTemplate.setKeySerializer(new StringRedisSerializer());//设置序列化value的实例化对象redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());return redisTemplate;}}

 

转载于:https://www.cnblogs.com/msc2018/p/9198959.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C符号之逻辑运算符 左移与右移 自增自减

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!本篇文章将总结C中一些比较有趣的符号逻辑运…

年轻的工程师如何月入伍万XD

郑昀:你要跟谁比?关键词:成长,自我管理,自我激励,面试,候选人201806 ——你觉得跟你的 Leader 差在什么地方?——肯定有差距,一个是知识面不如他广,二一个是解…

字符串翻转

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!《递归入门》字符串翻转:将字符串…

Java学习之SpringBoot整合SSM Demo

背景:在Java Web中Spring家族有着很重要的地位,之前JAVA开发需要做很多的配置,一堆的配置文件和部署调试一直是JavaWeb开发中的一大诟病,但现在Spring推出了SpringBoot,提供了快速单机部署调试和注解配置的便利。作为一…

Java别说取余( )运算简单,你真的会吗

一,直击现场下面我来抛出几道题: 说明m是商,n是余数; (1)正数%正数 3%2m…….n 2%3m…….n (2)正数%负数或者负数%正数 -3%2m…….n 3%-2m…….n -2%3m…….n 2%-3m…….n (3)负数%负数 -3%-2m…….n -2%-3…

centos6 5从命令行进入图形界面

一,安装图形界面包组 yum groupinstall “Desktop” -y yum groupinstall “X Window System” -y之所以加 -y 是为了一会安装的时候不用再确认了。不加-y也行。不过一会儿有可能有很多选项需要你确认;二,进入图形界面 startx从图形界面到命令…

decimal这个数据类型的用法,保证你看懂

笔者在网上搜了好久,解释都晦涩难懂。最后通过亲手实践加课本知识得出结论如下: decimal(M,N) M表示:不包括小数点,不包括符号位,所能存数字的总位数(包括小数部分和整数部分) N表示:小数部分…

前端与后端接口的交互案例

一、案例描述1,前端页面提供用户名,密码输入框。 2,通过Ajax发送请求到后端Serlvet。 3,后端Serlvet处理请求,根据输入的用户名和密码返回给前端不同信息前端访问后端接口通过后端提供的的URL二、主要代码1、前端页面&…

20172301 2017-2018-2《程序设计与数据结构》课程总结

20172301 2017-2018-2《程序设计与数据结构》课程总结 每周作业链接汇总 预备作业1 简要内容:对上学期的认识和总结,对专业和老师的期望。预备作业2 简要内容:关于技能和学习技能经验。预备作业3 简要内容:安装虚拟机和Linux命令学习。第一周作业 简要内容: 计算机系…

软链接和硬链接到底有啥作用和区别

前言:在网上搜索了好久,看了很多博客,某度知道等等。关于软硬链接的解释都太模糊,还有什么i节点,跨分区根本弄不明白,在查阅了书籍和询问老师后决定自己写一篇简单的博文,然初学者都能够明白的博…

python执行gradle脚本

1 import os2 import shutil3 import subprocess4 5 #拷贝文件6 def copyFile(srcFile, dstFile):7 #检查源文件是否存在8 if not os.path.isfile(srcFile):9 print(%s not exist % srcFile) 10 return False 11 #如果目的路径不存在创建目录 12 …

redis 批量删除操作

redis 原生删除方法 del key1 key2 ... 只支持显示删除 使用*通配符 和 xargs可以很方便地进行批量删除 形式如下: redis-cli -h 192.168.1.45 -p 6379 keys "*" | xargs redis-cli -h 192.168.1.45 -p 6379 -n 6 del *通配符:匹配所有字符 补…

c语言怎么做到四舍五入

一&#xff0c;总结如下这里笔者就不谈Math.h中的round()函数了。它是可以做到的&#xff0c;但是据说这个函数和编译器有关系。所以在这里就不介绍了。 我的方法很简单&#xff1a;#include<stdio.h> int main(){ double d1,d2,d3; d1-3.1415926; d2(int)(d1*1…

c++ 的makefile文件实例

首先声明&#xff0c; 感谢九哥的帮助&#xff0c;因为从来没写过makefile&#xff0c; 所以一直是手动编译&#xff0c; 然后有一次写了三个文件&#xff0c; 需要编译&#xff0c; 而我只编译了一个文件&#xff0c; 所以一直出错&#xff0c; 九哥告诉我用makefile更方便&am…

操作系统短作业优先(SJF)调度算法

一&#xff0c;算法代码#include<stdio.h>struct sjf { //定义进程的结构体 char name[10];//进程名 float arrivetime;//到达时间 float servicetime;//服务时间 float starttime;//开始时间 float finishtime;//完成时间 float zztime; //周转时间 …

git add -A 、git add -u 、 git add . 三种区别

git add -A 提交所有变化 git add -u 提交被修改(modified)和被删除(deleted)文件&#xff0c;不包括新文件(new) git add . 提交新文件(new)和被修改(modified)文件&#xff0c;不包括被删除(deleted)文件 转载于:https://www.cnblogs.com/php08049/p/9214175.html

操作系统进程调度先来先服务FCFS

一&#xff0c;实验的流程图二&#xff0c;实验代码注&#xff1a;本代码主要来自豆丁&#xff0c;加入本人的部分修改。。//本FCFS是用不带都结点的链表完成。当然也可以用其他数据结构 #include<stdio.h>#include<stdlib.h>typedef struct PCB //定义进程控…

如何给SAP Cloud Connector Region列表中添加新的Region

SAP help里提供了CloudFoundry和Neo环境下可用的Region和API endpoint&#xff1a; 当我们期望用SAP Cloud Connector连接某个SAP云平台Region时&#xff0c;一般是从F4 value help里选择&#xff1a; 如果drop down list里没有我们希望使用的region怎么办&#xff1f; 解决方案…

java 8 中文API

java 1.6 帮助文档中文链接&#xff1a;http://download.csdn.net/detail/qw599186875/9608735Java1.8 帮助文档中文 – 谷歌版在线版: https://blog.fondme.cn/apidoc/jdk-1.8-google/ 下载链接&#xff1a;http://download.csdn.net/detail/qw599186875/9802192中文 – 有道版…

Swift - 循环强引用,内存泄漏

https://www.hangge.com/blog/cache/detail_742.htm 转载于:https://www.cnblogs.com/saytome/p/9219073.html