SpringBoot的一个关键注解是@SpringBootApplication,在这个注解中有三个重要注解:
@Configuration -- 就是Spring IOC容器的配置类,被Configuration注解的java类称为
JavaConfig配置类,它可以与@Bean配合使用,在这个类中的方法
上使用@Bean注解,返回值将作为一个bean定义注册到Spring的IOC容器
@ComponentScan --相当于Spring xml配置中的
自动扫描并加载符合条件的组件,最终这些bean定义加载到IOC容器
@EnableAutoConfiguration -- 借助@Import注解,引入AutoConfigurationImportSelector类,
该类调用SpringFactoriesLoder加载所有spring.factories文件,
将所有符合自动配置条件的bean定义注册到IOC容器
Spring MVC是依靠前端控制器DispatherServlet的调度在工作,DispatherServlet的继承关系如下图:
DispatcherServlet继承了FrameworkServlet,FrameworkServlet继承了HttpServletBean,
HttpServletBean继承了HttpServlet,HttpServlet的service方法会根据请求类型不同调用
doGet、doPost等方法,而这些方法是在HttpServletBean中实现的,HttpServletBean的
这些方法又调用了processRequest方法,processRequest方法调用了doService,而
doService是在DispatherServlet类中实现的,doService方法调用了doDispatch方法。
在doDispatch方法中体现了DispatherServlet的工作流程:
1.通过HandlerMapping得到处理器执行链HandlerExecutionChain对象,
HandlerExecutionChain对象包含了处理器对象(Handler)和拦截器对象;
2.在调用HandlerAdapter生成ModelAndView之前,执行拦截器的preHandle方法,
如果返回false,直接返回,HandlerExecutionChain中的处理器对象不会执行,
返回true继续执行;
3.doDispatch调用处理器适配器HandlerAdapter返回ModelAndView,接着执行
拦截器的postHandle方法(如果配置了拦截器,可以在该方法中对ModelAndView
进行操作);
4.通过render方法调用视图解析器ViewResolver返回视图对象View,然后调用View
的render方法将model数据渲染到视图;
5.在渲染完view之后,返回视图到客户端显示之前,执行拦截器的afterCompletion方法;
6.返回视图呈现用户
1.Spring Boot是Spring和Spring MVC的整合,而Spring MVC只是Spring的一个模块,一个轻量级的Web层框架
2.Spring Boot几乎可以实现零配置,所有功能使用注解进行开发,运用了'约定大于配置'的思想,简化了项目开发
难度,而Spring MVC需要依赖于xml配置进行开发
3.Spring Boot提供了内置的tomcat,可以打成jar包直接运行,也可以使用外置tomcat
4.Spring Boot还继承了许多第三方库配置,例如,JDBC, Mongo, Redis等,应用这些第三方库,几乎可以零配置