Spring的Annotation搞定所有

首先是一个叫MyMvcConfig的类, 里面相当于当年的spring-mvc配置.xml

@Configuration
@EnableWebMvc
@ComponentScan("com.wulala.controller")
public class MyMvcConfig extends WebMvcConfigurerAdapter {
    // 这只是一个普通的配置类, 配置了JSP的ViewResolver用来指定映射路径
    // 跟文件扩展名,@EnableWebMvc注解会开启一些默认配置
    // 继承会用下面的addResource的方式进行配置

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/classes/views/");
        viewResolver.setSuffix(".jsp");
        viewResolver.setViewClass(JstlView.class);
        System.out.println("from view resolver");
        return viewResolver;
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/assets/**").addResourceLocations("classpath://assets/");
    }

    @Bean
    public DemoInterceptor demoInterceptor() {
        return new DemoInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(demoInterceptor());
    }

}

一方面它指定了jsp视图的位置

一方面它加入了一个Interceptor, 这个注入器, 是一个HandlerInterceptorAdapter, 每个请求执行前后都可以做点儿事:

public class DemoInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        long startTime = System.currentTimeMillis();
        request.setAttribute("startTime", startTime);
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modleAndView) throws Exception {
        long startTime = (Long) request.getAttribute("startTime");
        request.removeAttribute("startTime");
        long endTime = System.currentTimeMillis();
        System.out.println("本次请求处理时间为:" + new Long(endTime - startTime) + "ms");
        request.setAttribute("handlingTime", endTime - startTime);
    }
}

然后是一个WebInitializer

public class WebInitializer implements WebApplicationInitializer {
    
    public void onStartup(ServletContext servletContext)throws ServletException{
        AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();
        ctx.register(MyMvcConfig.class);
        ctx.register(MyMvcConfig.class);
        ctx.setServletContext(servletContext);
        
        //注册DispatcherServlet
        Dynamic servlet=servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
      
        servlet.addMapping("/");
        servlet.setLoadOnStartup(1);
        
    }

}

跟servlet相关, 配置根地址的映射?

Controller就不贴了, 总之, 这种纯用java类方式配置, 嗯, 很新颖, 很潮流?

唔知, 继续, 可能下面会很好玩.

 

哦对了, 有了这个Interceptor, 可以在控制台输出一下请求使用的时间, 估计后面为实时监控服务器的状态打下基础.

转载于:https://www.cnblogs.com/Montauk/p/9835468.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值