美文网首页
SpringMVC中的ViewResolver是怎么使用模板方法

SpringMVC中的ViewResolver是怎么使用模板方法

作者: 就这些吗 | 来源:发表于2020-01-03 00:20 被阅读0次

    模板方法一般是用到了抽象类,在抽象类中定义abstract方法和普通方法,子类继承的时候abstract方法是必须重写的,而普通方法可以用父类已经写好的(必要的时候也可以进行重写)。

    最大的好处:代码复用,减少重复代码。除了子类要实现的特定方法,其他方法及方法调用顺序都在父类中预先写好了。

    直接来看下SpringMVC中的的ViewResolver是怎么使用模板方法的吧。
    先是ViewResolver接口,里面只有一个resolveViewName方法,这边我们就看看AbstractCachingViewResolver是怎么使用的。

    image.png

    这就是AbstractCachingViewResolver类的具体结构,这是一个抽象类,自己定义了一些方法,然后实现了接口的方法,定义了一个抽象类供子类去实现。(注意名字前面的颜色和小图标,绿色指public方法,黄色指的是protected方法,c指的是类的名字;而带个A字母代表抽象方法本身;有一个△指的是Override了一个方法)

    image.png

    resolveViewName方法:

    1. 首先判断缓存中是否存在View,如果不存在则调用 createView() 方法创建View
    2. 如果有则从缓存中获取View

    loadView方法:

    用来生成视图对象,而怎么生成,是通过XML文件,还是properties文件,就是子类各自实现的事情了,模板方法的意义也正在此处,resolveViewName方法是可以复用的,而loadView各不相同。

    比如XmlViewResolver中的实现:
    直接从BeanFactory去取名称相同的bean。


    image.png

    相关文章

      网友评论

          本文标题:SpringMVC中的ViewResolver是怎么使用模板方法

          本文链接:https://www.haomeiwen.com/subject/cxpaoctx.html