首页 > 代码库 > Spring MVC 配置笔记--基于JavaConfig

Spring MVC 配置笔记--基于JavaConfig

主要使用基于 JavaConfig 方式配置

配置 DispatcherServlet

通过继承抽象类AbstractAnnotationConfigDispatcherServletInitializer来自动配置 DispatcherServlet 和 Spring 应用上下文(不需在 xml 中配置)

public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
?
    // 指定 Spring 应用上下文配置类(主要配置 web 组件的 Bean)
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};
    }
  
    // 相对应的另一个应用上下文配置类(应用中的其他 Bean)
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{RootConfig.class};
    }
?
    // 将 DispatcherServlet 映射到 "/"
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

其中 WebConfig 主要配置 web 组件相关的 Bean,如控制器、视图解析器以及处理映射器等,内容大致如下

@Configuration // 标志这个类为配置类
@EnableWebMvc // 启用注解驱动的 Spring MVC,同xml配置方式的<mvc:annotation-driven>
@ComponentScan("spitter.web") // 扫描这个包中的 Bean 组件
public class WebConfig extends WebMvcConfigurerAdapter{
?
    /**
     * 配置视图解析器
     */
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;
    }
?
    /**
     * 配置静态资源的处理
     */
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
  
    // 其他 web 相关 Bean 等... 
}

RootConfig 配置除 web 组件外的其他 Bean,内容大致如下

@Configuration
// 配置扫描的包,以及过滤条件
@ComponentScan(basePackages = {"spitter"}, excludeFilters = {
    @Filter(type = FilterType.ANNOTATION, value = http://www.mamicode.com/EnableWebMvc.class)})
public class RootConfig {
    // Bean 等
}

添加 Controller 等

可以在相应位置添加对应 Controller 、jsp 文件等

列一个简单的 Controller

@Controller
@RequestMapping("/")
public class HomeController {
    @RequestMapping(method = RequestMethod.GET)
    public String home() {
        return "home";
    }
}

文件结构 

文件整体结构如下:

技术分享

 

Spring MVC 配置笔记--基于JavaConfig