方志朋 2020-05-09
·springMVC中取消了web.xml文件,那么web容器的组件应该怎么加到容器中呢?
在src同级目录下建立META-INF文件夹,里面还有个services文件夹,中间有个javax.servlet.ServletContainerInitializer文件,其中定义了自定义的ServletContainerInitializer的全路径。
这个自定义的入口应该怎么定义呢?
首先要实现ServletContainerInitializer方法,实现其中的onStartup方法,
arg0:感兴趣的类的子类型(一个接口的所有实现)
ServletContext:代表当前web应用,可以注册三大组件
那么这些参数怎么传入呢?
在自定义类上面加上@HandlesTypes注解里面有values,写入接口,这就是arg0
获取到arg0之后需要通过反射机制来创建想要的对象
·用ServletContext来注册我们的组件
arg1.addServlet(‘OrderServlet‘, new OrderServlet());//注册servlet组件
后续还会加上url
接下来注册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中
由前所述,里面的内容是
org.springframework.web.SpringServletContainerInitializer