AbstractAnnotationConfigDispatcherServletInitializer 无效的解决方案 spring in action 4th 5的补充说明

根因

    tomcat没有加载spring的依赖导致的404

解决过程

网上搜索了错误,没有找到能够解决的方案,只有一个配置文件存在的问题--和一些其他的配置

提供一下配置文件存在的问题

http://stackoverflow.com/questions/33002129/spring-mvc-java-config-via-abstractannotationconfigdispatcherservletinitializer

解决了问题之后回头看这个,他应该是在xml中配置了,然后在类中又配置了其他的引起的无效问题.

 

AbstractAnnotationConfigDispatcherServletInitializer类的作用不再赘述

仅介绍使用AbstractAnnotationConfigDispatcherServletInitializer后,没有生效的原因.

未生效的效果大概像这个图,这里其实应该可以注意到404的时候没有报spring的错误(刚学习没有注意到)

中途在

AbstractAnnotationConfigDispatcherServletInitializer类上添加断点,然后发现并没有进入类加载(在类名行加断点可以看到加载),从这里其实已经发现是spring没有启用(没有魔法,所有东西必然有个启动的位置),因为按照spring in action 的说法,AbstractAnnotationConfigDispatcherServletInitializer这个类必然是会被加载的(容器钩子加载)

 

之后搜索到mvc的启动原理

https://www.jianshu.com/p/57677a2c6ebd

里面对这个问题有效的部分在这里说明一下

然后在spring-web依赖里面看到了相关的文件

然后感觉应该是lib没有被加载(tomcat加载了lib后,使用的是逻辑路径访问)(这里又发了一会呆..lib没有加载怎么不报ClassNotFound,然后突然反应过来,还没有加载自己编写的类..)

现在应该大部分用的idea,配置tomcat如下

 

主要看标红的部分

这个就是它的作用,相当于发布这个目录到tomcat中

然后看artifact配置

然后看目录格式

结构是不是很熟悉..

学习java-web的都遇到过编译正常,然后在tomcat中发布没有找到类的问题把..

所以这里是启动时没有将spring-web的依赖注入tomcat.然后既然没有ServletContainerInitializer的描述文件自然不会加载相关配置

所以就有两个解决方法

1. 指定tomcat添加spring的依赖(希望大佬指导一下)

2. 复制spring的依赖到发布包里面

3. 复制lib到tomcat的lib里面(不建议)

解决方案

2的大概操作如下

名字叫lib,就和截图里面的一样

然后在lib右键,选择add copy of

然后把所有依赖都放进去..

这里还有一个坑,我感觉tomcat应该有jstl的依赖(jsp),所以没有选择jstl的依赖复制,结果服务器500,jsp的解析器找不到

其他

eclipse如果也出现这种问题,可以参考一下

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值