springboot 차단 기 는 redisTemplate 의 해결 방법 을 주입 할 수 없습니다.
5152 단어 springboot주입redisTemplate
먼저 문 제 를 보고 차단 기 를 새로 만 든 다음 redisTemplate 를 주입 합 니 다.
/**
* @author: lockie
* @Date: 2019/8/13 16:16
* @Description:
*/
@Component
public class AccessLimitIntercept implements HandlerInterceptor {
private static final Logger logger = LoggerFactory.getLogger(AccessLimitIntercept.class);
@Autowired
private StringRedisTemplate redisTemplate;
/**
* ip
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
try {
String test = redisTemplate.opsForValue().get("test");
logger.info(test);
} catch (Exception e) {
logger.error("API , :", e);
throw new ParameterException(e);
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
private boolean setResponse(Results results, HttpServletResponse response) throws IOException {
ServletOutputStream outputStream = null;
try {
response.setHeader("Content-type", "application/json; charset=utf-8");
outputStream = response.getOutputStream();
outputStream.write(JsonUtil.toJson(results).getBytes("UTF-8"));
} catch (Exception e) {
logger.error("setResponse ", e);
return false;
} finally {
if (outputStream != null) {
outputStream.flush();
outputStream.close();
}
}
return true;
}
}
그리고 차단 기 를 설정 합 니 다.차단 기 config 클래스 를 새로 만 듭 니 다.모든 url 을 차단 합 니 다.
@Configuration
public class WebFilterConfig implements WebMvcConfigurer {
/**
*
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new AccessLimitIntercept()).addPathPatterns("/**");
}
}
새 controller 에 인 터 페 이 스 를 추가 하고 postman 호출 인 터 페 이 스 를 사용 합 니 다.
@RestController
@RequestMapping("/")
public class PingController extends BaseController {
@GetMapping(value = "/ping")
public Results ping() {
return succeed("pong", "");
}
}
postman 호출/ping 인 터 페 이 스 를 사용 하여 시스템 오 류 를 되 돌려 줍 니 다.콘 솔 에서 빈 포인터 의 오 류 를 발 견 했 습 니 다.포 지 셔 닝 오 류 는 redis 에 있 는 key 가 test 의 값 을 가 져 오 려 고 할 때 redisTemplate 가 비어 있 지 않 고 주입 되 지 않 은 것 을 발 견 했 습 니 다.
문제 해결:
차단기 가 bean 실례 화 전에 실 행 된 것 을 알 고 있 으 면,차단기 가 실 행 될 때 실례 화 된 차단기 Bean 을 차단기 설정 클래스 에서 먼저 실례 화 된 차단 기 를 실행 한 다음 에 가 져 옵 니 다
@Configuration
public class WebFilterConfig implements WebMvcConfigurer {
/**
* , redistemplate
* @return
*/
@Bean
public AccessLimitIntercept getAccessLimitIntercept() {
return new AccessLimitIntercept();
}
/**
*
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getAccessLimitIntercept()).addPathPatterns("/**");
}
}
postman 으로 다시 요청 하면 접근 할 수 있 습 니 다.springboot 차단기 가 redisTemplate 에 주입 되 지 않 는 해결 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 springboot 차단기 가 redisTemplate 내용 을 주입 할 수 없습니다.이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin Springboot -- 파트 14 사용 사례 REST로 전환하여 POST로 JSON으로 전환前回 前回 前回 記事 の は は で で で で で で を 使っ 使っ 使っ て て て て て リクエスト を を 受け取り 、 reqeustbody で 、 その リクエスト の ボディ ボディ を を 受け取り 、 関数 内部 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.