У меня возникли проблемы с получением @ControllerAdvice
для работы. Я обновил свое пространство имен, которое было 3.1 в моих xml-файлах. Я переместил класс с контроллером в тот же пакет, что и контроллер. Я использую выпускные банеры 3.2.0. Если я помещаю аннотацию @ExceptionHandler
в код контроллера, она работает, но не в отдельном классе с @ControllerAdvice
. Когда класс @ControllerAdvice
терпит неудачу, я получаю свой обработчик обработчика исключенных исключений. У кого-нибудь есть идеи о том, как справиться с этим?Spring 3.2 @ControllerAdvice Не работает
ответ
Дополнительной конфигурации не требуется. Он должен просто работать. Посмотрите на эту ссылку для получения более подробной информации. Это обеспечит очень простой пример:
http://www.javabeat.net/2013/10/exception-controlleradvice-spring-3-2/
Это кажется правдой, хотя тестирование - это совсем другая проблема. – bschlueter
Если вы используете сканирование пути к классам, вероятно, вы должны добавить новый фильтр включения в свой <context:component-scan>
элемент:
<context:include-filter type="annotation"
expression="org.springframework.web.bind.annotation.ControllerAdvice" />
По умолчанию сканирование не задачи поиска этой аннотации, следующей весной-контекстно-3.2.xsd для component-scan
:
«Сканирует путь к классам для аннотированных компонентов, которые будут автоматически зарегистрированы как весенние бобы. По умолчанию будут найдены стереотипы @Component, @Repository, @Service и @Controller, созданные Spring».
Это имеет смысл, почему он не работает. Я провешу его сегодня вечером и посмотрю, работает ли он. – Joe
ОЗНАКОМЬТЕСЬ! Он работает из коробки, но эта аннотация необходима, когда вы тестируете устройство! – Chexpir
Также убедитесь, что это находится в файле контекста webmvc, а не в главном контексте приложения. –
Для этой задачи Первое подтверждает свой конфиг,
- Вы должны убедиться, что @ControllerAdvice класса под компонент сканирования базового пакета.
- Сделайте suer вы используете
<mvc:annotation-driven/>
в вашем spring-servlet.xml. или иметь @EnableWebMvc в вашем @ControllerAdvice классе
Когда вы имеете право конфигурации, то ControllerAdvice должен уже работать, сейчас вы сказали, вы получили ваш неперехваченный вид обработчика исключений. Я предполагаю, что вы получили, что в вашем InegrationTest, и вы использовали mockMvc, чтобы проверить, что, если да, то вам нужно поместить @WebAppConfiguration и построить mokcMvc следующим образом:
@Autowired
private WebApplicationContext wac;
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
Использование standaloneSetup (контроллер) не будет работать, так как отсутствие WebApplicationContext ,
В моем случае @EnableWebMvc было достаточно –
Вы также можете добавить класс ControllerAdvice в standaloneSetup: 'MockMvcBuilders.standaloneSetup (новый MyController (myService)) .setControllerAdvice (новый MyControllerAdvice()). Build();' –
Я боролся с той же проблемой, когда мой класс @ControllerAdvice не загружался при модульном тестировании исключений контроллеров REST. Если вы используете весеннюю загрузку (версия 4), вы можете использовать дополнительные методы, добавленные весной, для загрузки классов рекомендаций контроллера в автономной настройке ваших контроллеров.
mockMvc = MockMvcBuilders.standaloneSetup(new YourRestController().setControllerAdvice(new ControllerAdviceClass()).build();
Это прямо-таки инициализировать класс советов контроллера и тест Junit должен иметь возможность перейти в методы @ExceptionHandler, определенных в классе советов контроллера.
Для меня @ControllerAdvice
не работал вовсе. Даже добавление @EnableWebMvc
или @WebAppConfiguration
не вносило никаких изменений.
Как я был в состоянии сделать это рабочим было,
- добавив
@ExceptionHandler
методы моегоAbstractController
класса, класс, что все остальные контроллеры расширяют на.
Я думаю @ControllerAdvice
должен делать то же самое, то есть компилировать @ExceptionHandler
методы, определенные в соответствии с классом указанного @ControllerAdvice
, в общее место, где каждый контроллер может относиться с. Но, к сожалению, это не работало для меня.
- 1. Spring ControllerAdvice ExceptionHandler не работает
- 2. Spring 3.2 Validate Request Param, ControllerAdvice не отвечает на форматирование
- 3. Spring @ControllerAdvice аннотация
- 4. Spring- @ ControllerAdvice use
- 5. Spring Загрузочный @ControllerAdvice обработчик исключений не стреляя
- 6. Глобальный обработчик ошибок с Spring @ControllerAdvice не работает
- 7. Spring 4 ControllerAdvice и InitBinder
- 8. Spring Rest ErrorHandling @ControllerAdvice/@Valid
- 9. Ищете @ControllerAdvice
- 10. @ControllerAdvice конфликт с ResourceHandler: Spring 4
- 11. @ControllerAdvice Not Firing
- 12. Spring ControllerAdvice и обработка исключений аутентификации/авторизации
- 13. Как обрабатывать 404 исключение вызывается с помощью AJAX, Spring MVC 3.2, @ControllerAdvice
- 14. Spring ControllerAdvice не срабатывает для некоторых исключений, кроме других
- 15. Как изящно обрабатывать исключения в Spring Security, не обрабатываемые ControllerAdvice?
- 16. @ControllerAdvice с @Autowired зависимость не впрыскивается
- 17. Propagate AccessDeniedException to Spring Security 3.2
- 18. SPring 3.2 Усечение траектории
- 19. Spring MV 3.2 Отображение ответов на исключение
- 20. Spring Security 3.2: @ Необработанные аннотации, не учтенные
- 21. Iintegrate Spring Security в spring mvc 3.2
- 22. . Весна 3.2 требует сервлета 3.0 или работает с сервлетом 2.5
- 23. @ Valid не запускается - Spring MVC 3.2
- 24. Тестирование @RestController с @ControllerAdvice
- 25. Пользовательская аутентификацияFilter Spring Security 3.2
- 26. @ControllerAdvice метод обработчика исключений не дозвонились
- 27. ControllerAdvice ExceptionHandler не вызывается из PropertyEditorSupport
- 28. Spring 3.2 MVC - ошибки проверки не отображаются
- 29. @ControllerAdvice не обработки исключений брошенные
- 30. ControllerAdvice не вызывает конкретных исключений
Вы смогли это решить? Я столкнулся с той же проблемой, что и вы. –