springMVC框架的理解加深,个人的一些想法

写spring-boot整合的时候,有种想看源码的冲动!呸,是钻牛角尖的毛病犯了...

  @RequestMapping("/index")
    public String index(Map<String, Object> map) {
        map.put("hello", "from HiController map");
        Map<String, Object> temp = new HashMap();
        temp.put("hi", "from HiController new map");
        /*不用写后缀*/
        return "/index";
    }

问题的产生就是为什么hello能传到前端,hi不能,因为都是同种类型的数据啊?

 

其实,大家靠猜都猜到spring通过反射,对@RequestMapping标志的方法都做了一些操作,那么具体是什么操作呢?

通过看源码,spring里面的invokeHandlerMethod,resolveHandlerArguments说的很清楚了,详细的我就不贴出来了,有兴趣的可以自己看看。

因为我感觉就算贴出来大家理解起来也难,所以就决定写一个伪代码来解释

 

func spring{
        map在此处已定义
        func index(map){
            修改map
            定义temp
            修改temp
        }
        此处map已经修改
        temp并不存在
}

这么看的话。spring的反射是不是很容易理解?

 

 

posted @ 2018-08-01 11:31  lgp20151222  阅读(223)  评论(0编辑  收藏  举报