搭建ssm框架出现的问题

以前写项目,总是在别人搭建好的项目基础上开发,很多基础的东西并不是很明白,这次自己搭建了一个ssm项目,搭建项目的过程这里就不做赘述,网上有很多教程.只是把我自己搭建项目过程中遇到的问题整理如下:

一.配置文件.此前我也看过网上很多ssm配置文件的教程,一般而言分为两种情况.

1)一种是严格按照ssm框架,spring,springmvc,mybatis和web.xml组成配置文件.

2)一种是将spring和springmvc合并成一个文件,mybatis和web.xml各自不变.

两种配置实际意义上并没有什么不同,但是我觉得第一种更符合逻辑意义,三个配置文件对应s,s,m,对于我这种对框架不熟悉的人来说比较容易理解.

下面是我参考的一个博客,附上链接,

https://www.cnblogs.com/dong-dong-1/p/8724127.html

这位博主是按照严格的分层来写的,但是我按照博主的思路搭建过程中遇到了一个问题:

博主在springmvc的配置文件中只扫描controller的相关注解,在spring的配置文件中只扫描除controller之外的其他注解,这种方式遵守了分层思想,但我在按照这种方式启动后报错显示找不到相关的controller类.目前尚未找到原因,只是找到了折中的解决办法,我将两个扫描合并为一个,放入spring的配置文件中,如下:

<context:component-scan base-package="mysite" />

mysite代表的是dao类,model类,controller类,service接口和实现类所在的包名.

然后在启动项目的时候,我又遇到了一个bug,报错如下:

Invalid bound statement (not found)

其中下面这位博主总结的比较全面.

https://www.cnblogs.com/liaojie970/p/8034525.html

而我出现问题的原因有两个:

1)在mapper.xml文件中的namespace 将名字写错,它应该对应同名的mapper接口的路径名.

2)配置没有写全,我当时只是扫描了xml文件所在包,没有扫描mapper接口所在包,写全后的配置如图:

二.代码配置注解.

为了符合开发逻辑,我将代码分为model,dao,service,serviceimpl,controller这几类,model即实体类,dao就是mapper接口,service是业务层的接口,实际上dao和service的主体代码一样,只是在逻辑上有分层(当前个人理解,如有不妥,请指正),serviceimpl是service的实现类.下面是遇到的几个问题.

1.在我所写的项目中,类上的注解需要两个,一个是@service,一个是@controller

2.service注解要写在serviceimpl上,而不是接口中,如图,

3.在controller中注入接口时要如下写法:

其中@Autowired是将其他类作为属性注入到controller中的注解,也可以使用@Resource,两者功能一样. 下面一定要注意:

注入的是实现类,但是用接口实现,体现了多态的思想.

猜你喜欢

转载自blog.csdn.net/qq_35148076/article/details/85003266
今日推荐