springmvc 主要功能由核心控制器,也就是DispatcherServlet来完成。
核心控制器在服务器启动的时候便初始化,在初始化过程中,读取springmvc.xml文件。
在springmvc.xml中定义了<context:component-scan base-package="com.zhg"></context:component-scan>,这里定义了业务处理器所在的包。核心控制器会扫描包下所有的类,找到那些带有
@Controller注解的类。 然后会读取带有@Controller注解类中的带有@RequestMapping的方法,
这些都是通过反射来完成。
RequestMapping中定义了路径,核心控制器会通过一个hash结构,将路径当做键,值是某个类中的某个方法保存起来。
当有请求访问某一个业务处理器的时候,会首先通过核心控制器,在这里可以获得当前请求的路径,根据路径(键),去hash中寻找对应的方法。
如果根据键没有找到对应值则会返回404状态码,如果找到了值,就会通过反射执行值中的方法。
一切的框架都可以用反射来解释