Spring执行原理(片段)
5.23
我们要从数据库获取数据,必须通过Controller, service, dao层,其中这三个层之间还要通过pojo层去封装数据。
所以第一步,我们要建立一个与service的”连接”,也要把service和dao层衔接起来。然后在dao层,利用mybatis-config.xml文件的配置,去用dao层实现的方法去和mapper文件配合,在数据库内取出数据。
其中具体的过程是
先在Controller层创建service的具体实例,(创建方法由spring容器完成),举个例子,如果我想查询数据库所有的数据,我会调用findall方法,用service实例去调用这个方法(因为目的是为了让他经过service层,如果有业务逻辑,事务需要处理,我们要在service层去处理),要建立实例就要有具体的类或者接口,于是我们就在service层建立一个接口并建立一个它的实现类,用来创建实例,但是具体的方法实现我们要实现这个service接口(也就是service的子类,因为接口是无法创建实例的)里去实现它,到这里假设 service完成了具体的任务。
下面要把这个用户的请求(通过controller service)要交给dao层去处理,所以我们要在service接口的这个具体的实现类中,去让spring容器去创建一个dao层实例,由于建立实例必须有具体的类或者接口,我们就必须在dao层去建立一个接口,然而接口是无法实现方法的,所以我们还要给dao这个接口建立一个实现类,也就是实现dao这个接口,然后我们的dao层实例就可以用spring容器建立起来了,用dao这个实例调用findAll方法,在dao接口的实现类中实现具体的方法,(mybatis-config.xml)中要求了用来增删改查的方法名必须要和mapper文件(dao层)中的一个个方法id保持一致,这样一来我们就可以利用这个方法(通过service层,dao层)最后由dao层去连接数据库把数据取出来了,最后我们要把取出来的数据通过pojo这个类(需要取什么样的数据就建立什么类)封装,然后再返回给dao层,接着返回给service层,最后返回给controller。
最后在controller层,我们要把我们取出来的数据,封装到Model中(spring容器创建的model)再把model和view(view其实就是返回return的那一小段jsp的名字(在applicationcontext.xml中有设置)。
然后我们就可以把MODEL和VIEW通过处理器适配器(HANDLERADAPTER)传给前端控制器(DISPATCHERSERVLET)然后由前端控制器发送给视图解析器,把VIEW视图返回给前端控制器,再由前端控制器发送MODEL进行视图渲染(就是给jsp文件进行标签属性的赋值操作)(view)最终响应给浏览器
浙公网安备 33010602011771号