基于注解的SpringMVC3.1配置

Spring3.1.x系列的一个新特性就是支持了Servlet3.0规范,基于注解的方式配置SpringMVC框架。
官方文档描述如下:
3.1.10 Support for Servlet 3 code-based configuration of Servlet Container
The new WebApplicationInitializer builds atop Servlet 3.0’s ServletContainerInitializer support to provide a programmatic alternative to the traditional web.xml.
•See org.springframework.web.WebApplicationInitializer Javadoc
•Diff from Spring’s Greenhouse reference application demonstrating migration from web.xml to WebApplicationInitializer
既然如此,我们就来实现一下。根据WebApplicationInitializer 的注释说明,实现该接口即可。

/**
* 基于Servlet3.0的,相当于以前web.xml配置文件的配置类
*
* @author OneCoder
* @date 2012-9-30 下午1:16:59
*/
public class DefaultWebApplicationInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext appContext) throws ServletException {
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(DefaultAppConfig.class);
appContext.addListener(new ContextLoaderListener(rootContext));
ServletRegistration.Dynamic dispatcher = appContext.addServlet(“dispatcher”, new DispatcherServlet(rootContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping(“/”);
}
}

这里说明一下,根据 WebApplicationInitializer 接口的注释说明(OneCoder建议大家多阅读代码注释(Javadoc),其实也就是API文档。),其实这里有两种初始化rootContext的方式。一种是利用XmlWebApplicationContext,即Spring的配置是通过传统的Xml的方式配置的。另一种就是这里用到的AnnotationConfigWebApplicationContext ,即Spring的配置也是通过注解的方式。这里,我们既然说了是完全零配置文件,那么我就采用第二种方式。利用新建的配置类,配置注解的方式,完成配置。

/**
* Spring3.1基于注解的配置类, 用于代替原来的applicationContext.xml配置文件
*
* @author lihzh
* @date 2012-10-12 下午4:23:13
*/
@Configuration
@ComponentScan(basePackages = “com.coderli.shurnim.*.biz”)
public class DefaultAppConfig {
}

可以看到,基本原有在配置文件里的配置,这里都提供的相应的注解与之对应。这里我们仅仅配置的包扫描的根路径,用于SpringMVC配置的扫描,以进一步达到零配置文件的效果。在业务包下,写一个MVC的controller类:

/**
* 用户操作Action类
*
* @author lihzh
* @date 2012-10-12 下午4:12:54
*/
@Controller
public class UserAction {
@RequestMapping(“/user.do”)
public void test(HttpServletResponse response) throws IOException {
response.getWriter().write(“Hi, u guy.”);
}
}

启动Tomcat,浏览器访问地址:

http://localhost:8080/onecoder-shurnim/user.do

怎么样,OK了吧。看看我们的工程,这回是不是真的一个配置文件都没有。
写在最后,OneCoder这里只是零配置文件的配置方式,不参与讨论配置文件与注解的优劣问题的争执。我觉得,这就是个人喜好问题。任何东西,有好的一面就有不利的一面,坚持你喜欢的并承担相应后果就好:)
[整理自网络]

此条目发表在java/j2ee分类目录,贴了, 标签。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据