Spring 3.2三个值得关注的新特性

一 不再需要web.xml

Servlet 3.0提供了既能在容器中动态注册servlet的方法,也提供了通过实现
ServletContainerInitializer接口的方法实现在容器启动阶段为容器动态注册Servlet、Filter和listeners。容器会在应用的启动阶段,调用所有实现ServletContainerInitializer接口类中的onStartup()方法。而Spring 3.2中,则进一步简化了这点,只需要实现WebApplicationInitializer接口就可以了,其中提供了一个相关的实现类--AbstractContextLoaderInitializer,它可以动态注册DispatcherServlet。这意味着,只要spring-webmvc.jar放置在web应用的web-inf/lib中,就可以调用Dispatcher servlet了。可以参考如下的例子:

public class MyWebApplicationInitializer implements WebApplicationInitializer { 

    @Override 
    public void onStartup(ServletContext container) { 
        ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet()); 
        registration.setLoadOnStartup(1); 
        registration.addMapping("/example/*"); 
    } 
} 

二 支持Java编程式配置
在Spring mvc 3.2中,提供了AbstractContextLoaderInitialize的一个子类AbstractAnnotationConfigDispatcherServletInitializer去实现零XML配置的效果,只需要创建的类继承AbstractAnnotationConfigDispatcherServletInitializer就可以了,如下代码所示:

public  class SugarSpringWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
        return new Class[] { JavaConfig.class }; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
        return new Class[] { WebConfig.class }; 
    } 

    @Override 
    protected String[] getServletMappings() { 
        return new String[] { "/" }; 
    } 

} 

三功能更强大的Spring Test 框架

public class SayHelloControllerIT extends AbstractTestNGSpringContextTests { 

    private MockMvc mockMvc; 

    @BeforeMethod 
    public void setUp() { 

        mockMvc = webAppContextSetup((WebApplicationContext) applicationContext).build(); 
    } 

    @Test(dataProvider = "pathParameterAndExpectedModelValue") 
    public void accessingSayhelloWithSubpathShouldForwardToSayHelloJspWithModelFilled(String path, String value) throws Exception { 

        mockMvc.perform(get("/sayHello/Jo")).andExpect(view().name("sayHello")).andExpect(model().attribute("name", "Jo")); 
    } 
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值