盲人摸象--web应用集成spring调试经历

    呃,这是补的上周的一篇笔记,集成spring并非我本人,而是作为邪恶的交换,帮一个朋友调试,他帮我安装一个运筹学的软件matlab,由于全是英文懒得弄,虽然这一笔生意看起来我是亏了,因为我弄了近三个小时。。。 不过是值得的。。 

    自己接触web应用以来,应该有两年了。  但是真正的算接触,或者说入门web应用,应该只有半年。。 不得不说这半年我成长了很多哈哈哈。有一丝吹牛的成分,不过确实是这样。

     至于集成spring,大概在两年前我啥也不懂的时候,便跟着教程“集成”过 ssh,ssm框架的应用。。 现在看来确实没啥用,因为那个时候超纲超的太严重了。  题外话说了很多便到此为止。

      说到web应用,服务器啥的不说了。 由于我接触的较多的是tomcat,因此以下的内容都是基于tomcat。  我认为一个web应用对于用户而言,最重要的莫过于web.xml文件。   它的重要性就相当于main方法。。之所以说是对用户来说最重要的,那是因为tomcat容器本身帮我们完成了很多事情。。  

      这次的调试过程我也是从web.xml入手。

    问题的原由:

         朋友的环境是,idea下的web项目,集成了maven的spring-web,spirng-webmvc,mybatis的相关依赖,以及一些必要的包。配置好了mybatis的内容,webmvc的内容,spirng的内容,以及数据源的配置等。   所有的内容都似乎是正常的。  但是运行起来的时候,@Controler注解始终没有生效。。 表现出来的内容,访问配置的路径始终是404。

         

    朋友的致误点在于:   将内容加载的监听器,漏写了Listener,写成了ContextLoader,神奇的是恰好也存在这个类。

    以上的这个web.xml中,包括了几乎所有的servlet规范的三个重要的内容,监听器,过滤器,servlet。

 将监听器正确的设置之后,出现了新的问题。。 那就是spring-mvc.xml解析出错。spring-mvc.xml的内容:

扫描二维码关注公众号,回复: 1632859 查看本文章


   它的内容很明显,即不能被正确解析。。 就是这样一个即不显眼,但是却致命的问题很烦人。  经历了相当长一段时间的尝试和各种寻找方法,真的算是盲人摸象了。  因此,又冒出来一个新的内容:spring.xml,和  spirng-mybatis.xml相继出现问题。。  这里想提一下的是,它们的名称应该也是可以自定义的。  比较嘲讽的是,它们是同样的问题,无法解析beans。

   


  当所有的问题都解决了之后,惊奇的发现任然是404。。  

   这可难受了,以我目前的能力能够处理倒这一步已经是奇迹了。。 摆在面前的就是是一个黑盒,完全不知道怎么下手。。。  眼看时间已经过了两个多小时。是时候展现真正的技术了。

   将所遇到的问题梳理一遍,将可能出现的问题给演练一遍。。 打断点调试,发现dispatcherServlet时被加载过的,应该也被实例化过。。   而相对的,   配置的controller则并没有被加载过。。 也就是说bean没有被注册到spring容器中。。 难道是注解不对?  翻看以前的源码,发现steroro.Controller注解没毛病啊。。 那么是servlet的配置不对吗?  依次排除。。 都不是。。 

   所以,处理问题的途径有两种:  一种去找以有的经验;  一种是去自己探索。。   优先级自然是从易到难。

   最后抱着尝试的态度改了一个参数,竟然好了。。 万万没想到。

    


    原来朋友使用的那个开启注解功能的bean,是较早版本的适配器,已经被废弃。。 这里是修改过后的。。 他原来使用的是:

DefaultAnnotationHandlerMapping。。  可以看到在idea中用了一个横线将它给划掉。。   这个错误的源头便是这里。。 也很正常,毕竟这里注解识别不到的直接后果便是bean不能被spring容器识别,导致背后的所有的功能都不能被实现。。

   所以说,版本很重要。尤其是对于那些产品更新维护较频繁的产品。    

猜你喜欢

转载自blog.csdn.net/qq_36285943/article/details/80720762