Можем ли мы обновить базу данных на PostHandel из HandlerInterceptor в Spring Boot? - PullRequest
0 голосов
/ 26 декабря 2018

Это мой HandlerInterceptor, где я использую postHandle.Для каждого ДОБАВИТЬ URL я называю этот перехватчик.В этом перехватчике я автоматически подключил свой LogTraceService, в котором есть репозиторий JPA для записи в базу данных Mongo.Но я получаю ошибку нулевого указателя на член класса "logTraceServer".

Я хочу записывать в базу данных Монго при каждом сохранении.Вот почему я написал этот класс.

public class MongoDbLogs implements HandlerInterceptor{

    @Autowired
    LogTraceService logTraceService; // This is my Service which have JPA Repository to access Mongo Db. This Service is working perfectly find if I use controller.

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            @Nullable ModelAndView modelAndView) throws Exception {
        mongoDbLogs( request,response);

    }

    protected void mongoDbLogs(HttpServletRequest request, HttpServletResponse response) {
        String userId =(request.getHeader("userId")!=null) ? request.getHeader("userId") :null;
        String ticket =(request.getHeader("ticket")!=null) ? request.getHeader("ticket") :null;
        LogTrace logTrace = new LogTrace();
        logTrace.setUserId(request.getHeader("userId"));
        Map<String, String> logMap = new HashMap();
        logMap.put(response.getClass().getName(), response.toString());
        logTrace.setUserSettings(logMap);

        logTraceService.add(logTrace); // Here I am getting null pointer error for "logTraceService"

    }

}

============================================

@ Публичный класс конфигурации AppConfig реализует WebMvcConfigurer {

@Bean
public MessageSource messageSource() {

    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("classpath:messages/message_tech");
    messageSource.setDefaultEncoding("UTF-8");


    return messageSource;
}

@Override
public void addInterceptors(InterceptorRegistry registry) {

    registry.addInterceptor(new MongoDbLogs()).addPathPatterns("/**/add*");

}

}

ПРИМЕЧАНИЕ. - Мой перехватчик совершенен, его исполняют, но проблема в том, что я получаю, что logTraceService является нулевым, даже если этоАвтосоединение.

...