将项目更改为maven使用ioc注解时,发生nopointexception

本文记录了在将项目转换为使用 Maven 和 Spring MVC 的过程中遇到的NoClassDefFoundError异常。问题源于缺少Spring MVC配置,尝试手动创建对象而非依赖容器。通过注释@Controller和@Autowired注解并调整配置,最终解决了问题。分析得出,bean对象作为局部变量使用时不宜全局注入,而Controller层的对象需由Spring匹配注入。
摘要由CSDN通过智能技术生成

2021-0217:将项目更改为maven使用ioc注解时,发生nopointexception:

  • 1.分析原因:虽然将servlet交给容器创建了,但是未引入springMVC,在webxml映射sevlet时,未从容器中取对象;于是我将sevlet里的service进行手动new创建,错误相同;
  • 2.分析原因:虽然在controller中手动注入了service,但是sevice仍然依赖容器注入dao层,如果全手动注入的话就用不到容器了,于是我在controller中获取容器,通过容器取到 service对象,报出此异常:java.lang.NoClassDefFoundError: org.springframework.beans.FatalBeanException
  • 3.分析原因:controller的@Controller和@Autowired注解未去除,在容器扫描时出错,可以在配置文件中去除controller的扫描路径,这里我对注解进行了注释,至此功能恢复;
  • 4.本次思考:
    • 1)bean层对象频繁使用在方法内作为局部变量,不适合提取至全局变量进行属性注入(如果提取需要将容器的创建方式改为多例模式)
    • 2)Controller层的bean对象需要经过spring匹配去调用才能实现自动注入(该条为猜测)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值