當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot在项目中基本配置设置
生活随笔
收集整理的這篇文章主要介紹了
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
總結
以上是生活随笔為你收集整理的SpringBoot在项目中基本配置设置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何修改UG标题文字
- 下一篇: 输入法里打出特殊符号