SpringMVC源码解读

·springMVC中取消了web.xml文件,那么web容器的组件应该怎么加到容器中呢?

SpringMVC源码解读

 在src同级目录下建立META-INF文件夹,里面还有个services文件夹,中间有个javax.servlet.ServletContainerInitializer文件,其中定义了自定义的ServletContainerInitializer的全路径。SpringMVC源码解读

这个自定义的入口应该怎么定义呢?

SpringMVC源码解读

 首先要实现ServletContainerInitializer方法,实现其中的onStartup方法,

arg0:感兴趣的类的子类型(一个接口的所有实现)

ServletContext:代表当前web应用,可以注册三大组件

那么这些参数怎么传入呢?

在自定义类上面加上@HandlesTypes注解里面有values,写入接口,这就是arg0

获取到arg0之后需要通过反射机制来创建想要的对象

·用ServletContext来注册我们的组件

arg1.addServlet(‘OrderServlet‘, new OrderServlet());//注册servlet组件

SpringMVC源码解读

  后续还会加上url

SpringMVC源码解读

 接下来注册Listener、Filter

·SpringMVC和IOC容器都不能在运行时加新的bean

SPRING-MVC源码解读

首先在pom文件中加入我们需要的依赖:

<dependency>  <groupId>org.springframework</groupId>  <artifactId>spring-webmvc</artifactId>  <version>5.0.6.RELEASE</version></dependency><dependency>  <groupId>javax.servlet</groupId>  <artifactId>servlet-api</artifactId>  <version>3.0-alpha-1</version>  <scope>provided</scope></dependency>在外部jar中

SpringMVC源码解读

 由前所述,里面的内容是

org.springframework.web.SpringServletContainerInitializer

相关推荐