ssm框架搭建过程中的bug(石乐志)

1.最初的错误:web.xml中未加listener

缺省代码:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

导致结果:页面500,报错内容

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeeController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.itlc.crud.service.EmployeeService com.itlc.crud.controller.EmployeeController.employeeService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.itlc.crud.service.EmployeeService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

2.错误原因未第一时间找到,反而改错了地方,修改了springmvc的扫描

从:

<context:component-scan base-package="com.itlc" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
 </context:component-scan>

改为了:
<context:component-scan base-package="com.itlc.crud.controller" use-default-filters="false"/>
而由于use-default-filters=”false”的存在并且没有自己定义扫描方法,就什么都扫不到了。于是,不但没改对,反而加大了错误。
报错:

 The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

导致结果:controller也扫不到了,页面从500直接404,并且仍然没有找到错误原因,疯狂修改其他地方,使得格式板式混乱,继续导致其他错误。

3.修改过程中又将mapper的xml放到了java的source的目录下,而target不会从source里面加载资源类文件,导致target中只有mapper的class文件,而没有xml文件。

报错:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.itlc.crud.dao.EmployeeMapper.selectByExampleWithDept

》》》》》》》修改过程:在朋友的帮助下一步一步解决》》》》》》

此时的报错,扫不到controller

策略:
方法1.去掉use-default-filters=”false”
或者使用方法2
方法2.恢复到

<context:component-scan base-package="com.itlc" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
 </context:component-scan>
改了上一个以后接着是页面500。

策略:在web.xml中补全代码:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
mapper.xml在target中没有,导致加载错误

策略:
方法1.将mapper的文件移动到resource中,注意同时修改spring配置文件找mapper.xml的对应位置,或者使用方法2。
2.在maven的配置文件中加入

<resources>
      <!--编译之后包含xml-->
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>

这样xml文件也会被加入到target中了。

总结:工程类文件一定要注意格式,不要什么自己创造新方法,有bug一定要对症下药,不要乱改。格式真的十分重要。

猜你喜欢

转载自blog.csdn.net/maniacxx/article/details/80630094