`
hooroger
  • 浏览: 13335 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Reason remind fro @ControllerAdvice @ExceptiionHandler does not work

 
阅读更多

Configured following lines in web.xml for servlet:               

                <init-param>

<param-name>detectAllHandlerExceptionResolvers</param-name>

<param-value>false</param-value>

</init-param>

 

===================================explain for the exception handler ====================

The <mvc:annotation-driven/> element implicitly registers a ExceptionHandlerExceptionResolverbean. This class has a initExceptionHandlerAdviceCache() method which scans beans in the context to find those whose class type is annotated with @ControllerAdvice.

It does this by first calling ControllerAdviceBean.findAnnotatedBeans(ApplicationContext). Internally, this method uses ApplicationContext#getBeanDefinitionNames(). The javadoc of this method states

Does not consider any hierarchy this factory may participate

To clarify what this means. When you declare a ContextLoaderListener in your deployment descriptor, it loads what we call a root or application ApplicationContext and makes it available in the ServletContext. When you then declare a DispatcherServlet, it creates its own servlet ApplicationContext and uses any ApplicationContext it finds in the ServletContext attributes loaded by the ContextLoaderListener as a parent to that context. The hierarchy looks like so

Root ApplicationContext // loaded by the ContextLoaderListener
            |
Servlet ApplicationContext // loaded by the DispatcherServlet

Every ApplicationContext has access to beans in parent contexts, but not the other way around.

The method above chooses not to use the beans in parent contexts and so only has access to beans in the current ApplicationContext (BeanFactory really).

As such, if your

<context:component-scan .../>

is declared in a root ApplicationContext as I'll assume from the name app-config, but the

<mvc:annotation-driven />

is declared in the servlet ApplicationContext, again assuming from mvc-config, then the ExceptionHandlerExceptionResolver looking for @ControllerAdvice beans will not find any. It is looking for beans in the servlet context but they aren't there, they are in the root context.

分享到:
评论

相关推荐

    Rocket.Chat.App-Remind

    用法:/ remind [我或@someone或#channel] [什么] [何时]例子触发以下提醒: /remind me to go out and take long walk in 10 minutes以用户身份发帖将向您发送确认消息,提示您已收到并安排了提醒。 rocket.cat: :...

    mattermost-remind:最重要的提醒斜线命令

    最重要的提醒 使用构建的/ remind斜杠命令/remind [@someone or ~channel] [what] [when]用法请参阅中的“的完整列表/remind help /remind list /remind version /remind [who] [what] [when] /remind [who] [what] ...

    Go-git-remind是一个命令行工具可以防止你忘记git-commit和git-push

    为了解决这个问题,出现了名为"Go-git-remind"的命令行工具。 "Go-git-remind"是一个用Go语言编写的轻量级应用,专门设计来帮助开发者养成良好的Git提交习惯。它的核心功能在于提醒用户适时地执行`git commit`和`...

    Remind.rar

    在本项目中,"Remind.rar" 包含了一个由C#编程语言实现的实用工具,主要用于定时关机和定时提醒功能,同时还有一个简单的农历日历。这些功能对于日常计算机使用非常有用,尤其是在需要自动执行特定任务或者设置提醒...

    mattermost-plugin-remind:最重要的插件,可为用户和频道设置提醒

    System Console -&gt; Experimental Features -&gt; Timezone = true用法/remind打开一个以安排提醒/remind help -显示帮助示例/remind list -显示/remind list /remind [who] [what] [when] /remind [who] [what] in [# ...

    git-remind:永远不要忘记git commit和push

    git-remind是一个命令行工具,可以防止您忘记git-commit和git-push。 产品特点 git-commit / git-push状态 git-remind检查您计算机中所有git存储库的状态,并显示状态是否存在未提交的文件和应提交到远程的预先提交...

    系统工具-文件下载-闪电提醒(Flash Remind) 0.9.53.zip

    《闪电提醒(Flash Remind) 0.9.53:高效系统提醒工具解析》 在信息化社会,时间管理成为了提升工作效率的关键因素之一。而"闪电提醒(Flash Remind) 0.9.53"作为一款系统工具,旨在帮助用户更有效地管理日程和提醒...

    Remind-开源

    "Remind-开源"是一个专为轻量级信息管理设计的应用程序,它的核心目标是为用户提供一个简单且高效的方式,来记录和提醒重要的事务,而不必依赖功能繁重的大型应用。开源软件的标签揭示了这个项目的本质——其源代码...

    Remind warning.rar

    在项目文件"Remind warning"中,可能包含了VB.NET源代码文件、配置文件、可能的声音文件以及其他支持资源。通过解压并研究这些文件,你可以更深入地了解上述步骤是如何具体实现的。 总结一下,本项目的核心技术点...

    Time_to_remind.rar_Time

    标题中的“Time_to_remind.rar_Time”暗示我们讨论的是一个与时间提醒相关的应用程序,可能是用于个人或团队的日程管理。这个系统可能包含了设置提醒、跟踪事件、管理时间等功能,以帮助用户有效地安排和记住重要的...

    remind:将思维导图带到浏览器

    Remind是一个基于React的免费开放源代码思维导图编辑器。 在上尝试 地位 基本的编辑器功能已实现(撤消,重做,导航,拖动,CRUD主题,快捷方式支持) 支持基本定制 该项目正在积极开发中,请在查看 安装 npm i ...

    power_remind.rar_C Builder_Power Game

    在“Power Remind.rar_C Builder_Power Game”这个项目中,我们关注的是一个名为“Power Game”的游戏应用。这个游戏可能是一个记忆挑战或者类似的游戏,其目的是提高玩家的记忆力或反应速度。C++ Builder是创建这个...

    雪狐提醒簿(Remind Book)

    雪狐提醒薄 是一个简单、易用、功能强大的提醒管理软件。 支持多种循环提醒、公元1年到...软件名称: 雪狐提醒簿(Remind Book) 版 本: Ver3.22 使用环境: NT / Win2000 / XP / Srv2003 软件类型: 共享软件

    Remind:提醒一下,一个 todo 管理应用

    Remind 是一个使用客户端-服务器架构开发的“待办事项”管理器。 服务器是用 Jersey 开发的 Java Servlet,而客户端是使用 Cordova 的移动应用程序。 特征 服务器 登录 - 登录 添加、编辑和删除“待办事项” 检索...

    remind-me:一个Powercord插件,可让您设置提醒

    Powercord插件,可让您使用remind &lt;duration&gt; 命令设置提醒 安装 要安装此插件,请转到您的插件目录,并使用以下命令将其克隆。 git clone https://github.com/Killerjet101/remind-me.git 去做 在设定的时间重复...

    chunxiao-remind.zip

    【标题】"春晓定时提醒.zip" 是一个包含软件应用的压缩文件,其核心功能是为用户提供各种生活和工作的提醒服务。这个应用名为"春晓定时提醒.exe",旨在帮助用户有效管理时间,确保他们不会错过任何重要的事情。...

    闪电提醒

    Flash Remind (闪电提醒)是Flash (闪电)系列的第2个产品。她专为经常使用计算机的人士设计的。0.21版本能够按照您设定的时间进行提醒,提醒时可以弹出窗口、播放音乐、执行指定程序、重新启动系统、关闭系统等多项...

    reMIND-开源

    **reMIND 开源项目详解** reMIND,全称为“资源管理智能决策系统”,是由瑞典林雪平大学精心研发的开源项目。该项目的核心目标是为工厂和生产线提供高效的资源利用优化解决方案。在制造业中,资源优化至关重要,...

    premise:将REMIND输出耦合到ecoinvent LCA数据库

    rmnd-lca设计为仅与IAM模型REMIND一起使用。 现在,随着它向IAM更加中立的方向发展,考虑了名称的更改。0.2.0中有什么新功能? 破译代码-&gt;新的工作流程(请查看):由于原始的ecoinvent数据库和清单仅加载一次,...

Global site tag (gtag.js) - Google Analytics