SpringMVC配置之使用annotation替代xml

前言

如何使用annotation取代xml呢。其实质就是把xml用java class表示,不过这些class要实现特定的接口。
那对于springmvc程序来说,我们要用到哪些xml呢。一般来讲会用到web.xml,spring根容器配置文件applicationContext.xml,springmvc容器配置文件mvc.xml

web.xml

用途

此文件为servlet规范中规定的文件。用来把我们要用到的servlet,filter,listener等注册给web服务器。算是一个java web应用的入口。

annotation化

Servlet 3.0中定义了一个接口ServletContainerInitializer,web服务器在启动的时候会扫描classpath下面所有实现了该接口的类,并调用它们。实现该接口,通过编码,可以实现与web.xml同样的功能。当然直接使用ServletContainerInitializer比较麻烦,spring及springmvc又给我们提供了一系列的简化,我们直接继承AbstractAnnotationConfigDispatcherServletInitializer即可。

根容器配置文件applicationContext.xml

用途

spring根容器的配置文件,比如说我们的dao啊,service啊一般都是放在根容器中的。

Annotation化

这个很简单,一个普通的java class就行了。类名上一般要加@Configuration@ComponentScan注解。注意在@ComponentScan的参数中指定要扫描的包名和要过滤的类。@ComponentScan要过滤的类通常有两种:一种是留给mvc容器的,一种是mvc容器本身的配置类。

mvc容器配置文件mvc.xml

用途

mvc容器的配置文件,mvc容器一般包含了ControllerViewResolverHandlerMapping等。

Annotation化

其实也是一个普通的java class就行了,加上@Configuration@ComponentScan还有@EnableWebMvc。当然为了更复杂的自定义也可以不使用@EnableWebMvc而是继承WebMvcConfigurationSupport。这里的@ComponentScan同样要指定扫描包以及如何过滤的bean(只留下带有@Controller @ControllerAdvice的bean)。

如何关联

web.xml中我们通过字符串指定了applicationContext.xmlmvc.xml
Annotaion方式是在AbstractAnnotationConfigDispatcherServletInitializer的子类中,通过getRootConfigClassesgetServletConfigClasses两个方法,返回配置类。

示例代码

mvc版本参考这里
等价的annotation版本参考这里

你可能感兴趣的:(annotation,springMVC)