注解配置MVC

使用配置类和注解联合使用的方式代替xml配置文件

 

在Servlet3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,
如果找到的话就用它来配置Servlet容器。 Spring提供了这个接口的实现,名为
SpringServletContainerInitializer,这个类反过来又会查找实现WebApplicationInitializer的类并将配
置的任务交给它们来完成。Spring3.2引入了一个便利的WebApplicationInitializer基础实现,名为
AbstractAnnotationConfigDispatcherServletInitializer,当我们的类扩展了
AbstractAnnotationConfigDispatcherServletInitializer并将其部署到Servlet3.0容器的时候,容器会自
动发现它,并用它来配置Servlet上下文。

下面的类是用来被servlet扫描的,用来代替web.xml的

里面配置了替代spring的IOC的配置文件的类,和替代mvc的IOC的配置文件的类

以及配置了dispatcher的有效路径和过滤器

public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer { 

/*** 指定spring的配置类*/
@Override
protected Class<?>[] getRootConfigClasses() {
  return new Class[]{SpringConfig.class};
}

/*** 指定SpringMVC的配置类 * @return */
@Override
protected Class<?>[] getServletConfigClasses() {
  return new Class[]{WebConfig.class};
}

/*** 指定DispatcherServlet的映射规则,即url-pattern * @return */
@Override
protected String[] getServletMappings() {
  return new String[]{"/"};
}

/*** 添加过滤器 * @return */
@Override
protected Filter[] getServletFilters() {
  CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
  encodingFilter.setEncoding("UTF-8");
  encodingFilter.setForceRequestEncoding(true);
  HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter();
  return new Filter[]{encodingFilter, hiddenHttpMethodFilter};
}
}

然后需要分别配置两个类作为spring和mvc的配置类

这两个类里面包含在IOC文件里面的一切信息

需要在类前添加Configuration注解,指定为配置类

@Configuration 
public class SpringConfig {

//ssm整合之后,spring的配置信息写在此类中
}

 

 

 

 

SpringMVC执行流程