SpringBoot-ブロックに@Autowired修飾beanを追加
14323 ワード
一、前言
最近のプロジェクト要件:
ブロッキングでのチェック
では、質問が来ました.
ブロッキングの具体的な実装クラスで、データベースをクエリーします???
二、具体的な実現
以前は
@Autowired private IUserService userServiceImpl;
結局爆発!
あとで
registry.addInterceptor(new BaseInterceptor(userSericeImpl)).addPathPatterns("/airapi/**");
結果は想像できる:
その後、次のように構成操作を行いましたが、成功しました.
実装クラス:
最近のプロジェクト要件:
ブロッキングでのチェック
token
しかし、私のtokenはデータベースに保存されています(まだRedisに保存されていません.では、質問が来ました.
ブロッキングの具体的な実装クラスで、データベースをクエリーします???
二、具体的な実現
以前は
HandlerInterceptor
の実装クラスに直接追加されました.@Autowired private IUserService userServiceImpl;
結局爆発!
あとで
registry.addInterceptor(new BaseInterceptor(userSericeImpl)).addPathPatterns("/airapi/**");
結果は想像できる:
!その後、次のように構成操作を行いましたが、成功しました.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import cn.linkpower.config.base.BaseInterceptor;
import cn.linkpower.service.IUserService;
/**
* web
*
* @author 765199214
*
*/
@Configuration
public class InterceptorConfiguration implements WebMvcConfigurer {
private Logger log = LoggerFactory.getLogger(InterceptorConfiguration.class);
@Autowired
private BaseInterceptor baseInterceptor;
/**
* web/app
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
this.log.info("cn.linkpower.config.InterceptorConfiguration----addInterceptors");
registry.addInterceptor(baseInterceptor).addPathPatterns("/airapi/**");
//WebMvcConfigurer.super.addInterceptors(registry);
}
/**
*
*/
//@Override
//public void addCorsMappings(CorsRegistry registry) {
// registry.addMapping("/**")
// .allowedOrigins("*")
// .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
// .allowCredentials(true)
// .maxAge(3600)
// .allowedHeaders("*");
//}
}
実装クラス:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import cn.linkpower.enums.LoginEnum;
import cn.linkpower.enums.TokenEnum;
import cn.linkpower.file.UserProperties;
import cn.linkpower.service.IUserService;
import cn.linkpower.service.impl.UserServiceImpl;
import cn.linkpower.util.DateTimeUtils;
import cn.linkpower.util.ObjectUtils;
import cn.linkpower.util.ResponseWriteUtils;
import cn.linkpower.vo.UserList;
@Service
public class BaseInterceptor implements HandlerInterceptor {
private Logger log = LoggerFactory.getLogger(BaseInterceptor.class);
@Autowired
private IUserService userServiceImpl;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// -----
// do something
// -----
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
this.log.info("cn.linkpower.config.base.BaseInterceptor--postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
this.log.info("cn.linkpower.config.base.BaseInterceptor--afterCompletion");
}
}