基于注解的SSM 整合时报错Servlet.init() for servlet springmvc threw exception

在学习SSM框架整合时遇到Servlet.init() for servlet springmvc threw exception错误。尝试了更换JDK版本、升级Spring、检查@Service、@Autowired、@Controller等注解,以及修复DAO层问题,但问题依旧。最终发现是springmvc.xml配置中注解扫描包不全导致,需扫描所有含注解的包。后来在添加新controller时,由于类名重复,导致mapper映射错误,再次引发相同异常。解决方案是确保每个类名的唯一性,并正确配置扫描包。
摘要由CSDN通过智能技术生成

基本情况

这两天刚开始学SSM框架,基于注解整合时报错
Servlet.init() for servlet springmvc threw exception

在网上查到的解决方法:

  1. 把 JDK 更换为 1.7 或 1.7 以下版本(以前到如果SSM框架能用jdk1.8跑起来)
  2. 把 Spring 升级到 4.0 RELEASE 或以上版本。(我的已经是4.2.0)
  3. 少写了 @Service 或者 没写 @Autowired 或者 没写 @Controller(检查了一遍都加上了)
  4. dao层出现问题(检查后发现确实又问题,列名写错了,但是改完后依然报同样错误)
  5. 配置文件错误,mapper 注入出时少些或者多写了一层 。
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
   		<property name="basePackage" value="com.nyist.dao.mapper"></property>
   		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>

而dao层在com.nyist.dao中
因此要把.mapper去掉

然而我检查了一下,发现并没有范这个错误

  1. 最后采用了 jl_net老哥给出的方法
<context:component-scan base-package="com.team07.controller" ></context:component-scan>

配置springmvc.xml扫表注解包时,我向以前写单独的springmvc一样只扫描了controller包,实际上所有含注解的包都要在这里进行扫描,因此应该写为

<context:component-scan base-package="com.team07" ></context:component-scan>

同样,如果只扫描包mapper的话因为controller没办法接受请求会报404 not found错误

然而,这还没完:

改完后我又多加了一个controller,并且加上了对应的pojo和mapper,但是运行时再次报了Servlet.init() for servlet springmvc threw exception!!!

当时一看到这个头都蒙了,返回去有检查了一遍扫描包,这次确实没错,回去检查代码。
原来是我前面图省事新建的controller和pojo中的类名没改,这样mapper映射时就会找到两个类,同样会报Servlet.init() for servlet springmvc threw exception错误!

最后总结,码代码还是要细心啊,写的时候多检查两遍,后面能省太多时间了

错误详细信息:

javax.servlet.ServletException: Servlet.init() for servlet springmvc threw exception
   org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
   org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
   org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
   org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
   org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
   java.lang.Thread.run(Thread.java:745)
root cause

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'adminController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.team07.service.AdminService com.team07.controller.AdminController.adminService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.team07.service.AdminService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {
   @org.springframework.beans.factory.annotation.Autowired
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值