日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot在项目中基本配置设置

發(fā)布時間:2023/12/10 javascript 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot在项目中基本配置设置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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()) // 對所有路徑進(jìn)行監(jiān)控 .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) {//登錄攔截規(guī)則:除了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("認(rèn)證失敗,缺少X-Auth-Token");
}
Token token;
try {
token = tokenManager.decodeTerminalToken(tokenStr);
...
    ...
    ...
} catch (ExpiredJwtException e) {
return checkResult.setErrorMsg("認(rèn)證失敗,token已過期,請重新登錄");
} catch (SignatureException e) {
return checkResult.setErrorMsg("認(rèn)證失敗,非法的token");
} catch (Exception e) {
return checkResult.setErrorMsg("執(zhí)行失敗");
}
return checkResult.setResult(true);
} ?

?5、redis配置

@Configuration public class RedisConfig {@Autowiredprivate RedisTemplate redisTemplate;@Beanpublic RedisTemplate redisTemplateInit(){//設(shè)置序列化key的實(shí)例化對象redisTemplate.setKeySerializer(new StringRedisSerializer());//設(shè)置序列化value的實(shí)例化對象redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());return redisTemplate;}}

?

轉(zhuǎn)載于:https://www.cnblogs.com/msc2018/p/9198959.html

總結(jié)

以上是生活随笔為你收集整理的SpringBoot在项目中基本配置设置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。