java mvc.xml_SpringMVC如何使用java而不是web.xml来配置?

按照之前传统的方式来配置SpringMVC需要在web.xml中配置DispatcherServlet,但是在Servlet3规范和Spring3.1之后新增了一种方式,那就是java和注解的方式进行配置,今天我们以Spring的最新版本5.2.0.RELEASE来进行一下配置,一起来看一下吧。

第一步:Servlet容器初始化

取消web.xml改用java来配置首先需要有一个入口,下图展示了这个入口,即先创建一个初始化的类MyWebInitializer,MyWebInitializer类继承了一个名为AbstractAnnotationConfigDispatcherServletInitializer的抽象类,同样这个抽象类实现了org.springframework.web.WebApplicationInitializer接口。

ca62bb2501394daf40e45e43854763f5.png配置DispatcherServlet

继承AbstractAnnotationConfigDispatcherServletInitializer需要实现三个方法,其中getServletMappings()会返回一个路径数组,将一个或多个路径映射到DispatcherServlet上,本例中它映射的是“/”,表示DispatcherServlet会处理所有的请求。

getServletConfigClasses()方法要返回一个带有@Configuration注解的类,这个类将会用来定义DispatcherServlet应用上下文。

getRootConfigClasses()方法要返回一个带有@Configuration注解的类,这个类将会用来配置原来xml中ContextLoaderListener所创建的应用上下文。

启动原理:

在Servlet3.0环境中容器会查找类路径下的实现了javax.servlet.ServletContainerInitializer接口的类,找到了就会用它来配置Servlet容器。从这个接口的全限定名称上可以看出它是java标准api的一部分,是在Servlet 3.0以后才添加的。Spring为这个接口提供了一个实现类:

459229285b2049bb4ecf5ad4d3f05fd6.pngSpringServletContainerInitializer

这个实现类又会把配置任务交给WebApplicationInitializer接口的实现类来完成。我们这里实现的抽象类AbstractAnnotationConfigDispatcherServletInitializer正是WebApplicationInitializer的一个实现类。而我们的MyWebInitializer正是AbstractAnnotationConfigDispatcherServletInitializer的一个扩展,所以这样就把配置任务最终交给了我们自定义的这个配置类MyWebInitializer。

第二步:自定义SpringMVC配置

我们新建一个配置类,这个配置类需要实现接口WebMvcConfigurer,如图:

e3db3482e85fcb785fe364f9159854f4.png配置SpringMVC

WebMvcConfigurer提供了回调方法来供我们自定义SpringMVC的默认配置。如果是使用@EnableWebMvc注解的话表示启用WebMvcConfigurationSupport类的默认配置。我们并没有使用@EnableWebMvc注解而是实现了WebMvcConfigurer,这样做是为了扩展。下面我们看下其中的方法:

viewResolver方法定义了一个bean,这个bean返回一个ViewResolver对象,这个对象是一个视图解析器。在其方法内部新建一个InternalResourceViewResolver实例来进行配置。其中setPrefix和setSuffix分别设置了视图的前缀和后缀。

configureDefaultServletHandling方法中我们调用了DefaultServletHandlerConfigurer对象的enable()方法,用于要求DispatcherServlet将对静态资源的请求转发到Servlet容器的默认Servlet上,而不是使用DispatcherServlet本身来处理。

addInterceptors方法用于添加SpringMVC的拦截器,图中将注入的拦截器myInterceptor进行注册并设置了拦截路径。拦截器的定义如下图:

9f70dc3b551827575958debc437c25c1.png定义拦截器

第三步:配置RootConfig

配置RootConfig的类如下:

e341fc6cbbbdfb2653658e5d05db5446.png配置RootConfig

关于Spring中的其他组件可以在这里进行配置,比如扫描com.example包下的除了EnableWebMvc注解和Controller注解标记的其他bean。

第四步:编写控制器

如下图,我们编写了一个控制器,其中含有2个方法来接收请求。一个返回视图,一个返回数据。更丰富的功能我们这里就不展开了。

bdca7010267cadb1b4a32f0de332f643.png控制器

结束语

好啦,到这里就完成了用java和注解的方法来配置SpringMVC。当然了我们在这里只是讲解了SpringMVC的环境的搭建,其更加丰富的内容我们将在以后的文章中再一一论述。比如参数的接收和验证、渲染视图、上传文件、异常处理等等。感兴趣的小伙伴可以关注一下哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值