SpringBoot有啥高科技?是怎么做到XML零配置的?

本文探讨了SpringBoot如何实现XML零配置,从SpringMvc的传统XML配置入手,解析了SpringMvc的javaConfig配置方式,重点分析了SpringBoot利用Servlet3.0的ServletContainerInitializer实现自动配置SpringMvc的过程。同时,文章还介绍了SpringBoot的两种部署方式及其启动流程。
摘要由CSDN通过智能技术生成

前言:刚毕业我就接触到了SpringBoot,当初感觉必成大器,第一印象就是内置了所有环境,打完包丢哪里都能跑起来,简化了tomcat Xml配置的一系列部署操作

1.SpringMvc XML配置

说到配置SpringMvc,大家第一时间反应就是xml配置,目前国内的各类博客或者各类老师都是套用这种方式,一直都是认为这种方式是唯一的方式,再说Spring官方一直支持。

1.1 配置web.xml

web.xml是servlet容器的配置文件,当启动一个WEB项目时,servlet容器首先会读取项目中的webapp/WEB-INFO文件夹的web.xml配置文件里的配置,主要用来配置监听器listener,servlet,上下文参数context-param。

    <!-- 配置监听器 -->      
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
  

    <!-- 配置DispatcherServlet -->  
    <servlet>  
      <servlet-name>dispatcherServlet</servlet-name>  
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  </servlet>

    <!-- ServletContext参数 -->  
   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/spring-config/*.xml</param-value>
   </context-param>

ContextLoaderListener(上下文加载监听) 继承了ServletContextListener(Servlet上下文监听),当ServletContext的生命周期发生变化会触发相应的事件

通过这个监听器进来的会通过createWebApplicationContext获取ConfigurableWebApplicationContext

具体代码:  ContextLoader ->configureAndRefreshWebApplicationContext方法

  protected void configureAndRefreshWebApplicationContext
        (ConfigurableWebApplicationContext wac, ServletContext sc) {
    //添加ServletContext
	wac.setServletContext(sc);
	String configLocationParam = sc.getInitParameter("contextConfigLocation");
   //添加Spring*.xml
	wac.setConfigLocation(configLocationParam);
    customizeContext(sc, wac);
	//读取配置加载,刷新Spring上下文
    wac.refresh();
  }

DispatcherServlet 用来接收SpringMVC所有请求的servlet程序,会注册到ServletContext中。

1.2 配置applicationContext.xml

主要扫描业务类,AOP切面配置,事务配置,数据源配置等

<!--扫描包注解   不扫描@controller-->
<context:component-scan base-package="com.wangnian">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan> 

1.3 配置springmvc.xml

主要扫描Controller,拦截器,视图转换等

<!--扫描包注解  只扫描@Controller-->
<context:component-scan base-package="com.wangnian.controller" >
	   <context:include-filter type="annotation"  expression="org.springframework.stereotype.Controller" />
</context:component-scan>  

1.4 启动大概流程

在启动Servlet容器,会去读取web.xml配置文件注册Servlet,然后异步执行ServletContextListener的contextInitialized方法读取用户自定义的xml配置文件并创建bean,刷新Spring上下文。

2.SpringMvc 另外一种配置

2.1 怎么注册DispatcherServlet ?

猜想1:也是xml配置方式。但是Spring官网都把零xml的配置当成一种优势,那显然不科学。

猜想2:@WebServlet。我们找找DispatcherServlet这个类?居然没有@WebServlet注解

那只能看看SpringMvc的文档&#x

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值