KACARICH'S BLOG's Archivers

From kaca.rich on 2014-04-14 15:00:53

spring4 对servelt3.0新特性过程跟踪

最近有用到oauth2,看spring自带样列代码在OAUTH2M2之后GITHUB上更新去掉了web.xml,更新描述为Convert oauth2 samples to Java config

 

spring4.0加入了对servlet3.0支持,支持对零配置文件的支持。SpringApplication帮助类作为应用入口,会启动嵌入式的Tomcat,因为在样例中使用了Spring MVC,所以也会自动注册所需的DispatcherServlet,这都不需要类似web.xml这样的配置。

还有一种方法

ServletInitializer实现了WebApplicationInitializer

WebApplicationInitializer这个接口的注释

Interface to be implemented in Servlet 3.0+ environments in order to configure the ServletContext programmatically -- as opposed to (or possibly in conjunction with) the traditional web.xml-based approach.

Implementations of this SPI will be detected automatically by SpringServletContainerInitializer, which itself is bootstrapped automatically by any Servlet 3.0 container. See its Javadoc for details on this bootstrapping mechanism.

也就是使用了tomcat7 Servlet3.0的新特性,但是具体对应的新特性我查阅了下,都是一些注解方式.可是在该接口并未看见对应接口,那SERVLET3.0的新特性究竟被封装在哪里呢?

详情见同包下SpringServletContainerInitializer,这个类实现了ServletContainerInitializer,这个就用于容器启动的扩展接口。但是跟WebApplicationInitializer有什么关联呢?具体可以看下源代码。其中他使用到了一个注解@HandlesTypes,这个注解就是希望处理哪些类,也就是ServletContainerInitializer接口会过滤其他类。然后作为参数传给接口方法。在SpringServletContainerInitializer.onStartup方法可以查看详细初始化过程。

 

现在大概过程都了解了。可以去调试自己的问题了。。

查看完整版本: spring4 对servelt3.0新特性过程跟踪

Tags:


©KACARICH'S BLOG