Были пробное Spring Web MVC (4.2.5) и иметь свой ряд вопросов, которые пытаются использовать DispatcherServlet иИмея использовать устаревшие классы с Spring MVC
<mvc:annotation-driven />
есть установка простой класс @Controller и хотел использовать сопоставление POJO для JSON. Доку сказал, что если Джексон был обнаружен на пути класса он будет использоваться автоматически, однако это не работает для меня, и я был вынужден использовать «устаревшую» AnnotationMethodHandlerAdapter
<bean name="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
<property name="messageConverters" ref="mappingJackson2HttpMessageConverter"/>
</bean>
, который затем работал хорошо.
В равной степени попытался создать класс @ControllerAdvice для обработки всех исключений, но получил только метод @ExceptionHandler, работающий над одним и тем же классом контроллера, и это было только тогда, когда я добавил (снова) устаревший AnnotationMethodHandlerExceptionResolver в контекст.
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver" />
Имея в два экземпляра устаревших классов предполагает, что я делаю что-то неправильно, особенно когда все учебники, кажется, предлагают все это должно «просто работать», но я не могу видеть, что (и на самом деле совать через источник Spring I не могут видеть, как по умолчанию и рекомендуемые обработчики будут работать в любом случае)
Ошибок нет, аннотация просто не обнаружена. Контекст заполнения XML является
пожалуйста, найти весь контекст XML ниже (очень простой)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:annotation-driven enable-matrix-variables="true"/>
<bean name="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
<property name="messageConverters" ref="mappingJackson2HttpMessageConverter"/>
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver" />
<context:component-scan base-package="com.domain.datastore.dao"/>
<context:component-scan base-package="com.domain.service"/>
<context:component-scan base-package="com.domain.uiapi"/>
</beans>
Пример контроллер
@RestController("/place/*")
public class PlaceController {
private PlaceService placeService;
@Autowired
public PlaceController(PlaceService placeService) {
this.placeService = placeService;
}
@RequestMapping(path="/{id}", method = RequestMethod.GET)
public @ResponseBody Place getPlace(@PathVariable("id") long id, Model model) {
return placeService.getPlace(id);
}
}
и обработчик сквозного исключения
@ControllerAdvice
public class GlobalExceptionController {
public GlobalExceptionController() {
System.out.println("GlobalExceptionController");
}
@ResponseStatus(HttpStatus.NOT_FOUND)
@ExceptionHandler(NotFoundException.class)
public ModelAndView handleCustomException(NotFoundException ex) {
return null;
}
}
Пожалуйста, включите журналы ошибок – Bnrdo
Можете ли вы подробно остановиться на том, что не сработало? Получили ли вы сообщение об ошибке?Запустилось ли приложение или нет? –
Было бы немного более ясно, если бы вы предоставили полный код вашей xml-конфигурации. –