blog » Java/J2EE » 基于注解的SpringMVC3.1配置

基于注解的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的,相当于以前<b>web.xml</b>配置文件的配置类
 * 
 * @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基于注解的配置类, 用于代替原来的<b>applicationContext.xml</b>配置文件
 * 
 * @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这里只是零配置文件的配置方式,不参与讨论配置文件与注解的优劣问题的争执。我觉得,这就是个人喜好问题。任何东西,有好的一面就有不利的一面,坚持你喜欢的并承担相应后果就好:)

[整理自网络]

This post has already been read 1070 times!

Related posts

RSS 2.0 | leave a response | trackback

发表评论