SpringMVC配置


基于XML和注解的配置

  1. 引入Spring、SpringMVC相关依赖(通过Maven或Gradle完成)
  2. 在web.xml配置监听器和ServletContext上下文参数(即Spring IoC容器初始化文件),当ServletContext容器建立时初始化Spring IoC容器(即初始化根上下文)
  3. 配置DispatcherServlet
<?xml version="1.0" encoding="UTF-8"?>

    
    
        
            org.springframework.web.context.ContextLoaderListener
        
    

    
    
        contextConfigLocation
        classpath:applicationContext.xml
    
    
	
	
    	dispatcherConfig
    	org.springframework.web.servlet.DispatcherServlet
    	1
    	

    
    	dispatcherConfig
    	/
    

在配置DispatcherServlet时,容器默认读取WEB-INF目录下的-servlet.xml文件。

-servlet.xml一般需要配置3点:

  • 启动注解
  • 配置组件扫描
  • 声明视图解析器
<?xml version="1.0" encoding="UTF-8"?>


    
    

    
    
	
    
    

之间的关系

1.如果你想使用@Autowired注解,那么就必须事先在 spring 容器中声明 AutowiredAnnotationBeanPostProcessor Bean。

2.如果想使用@Resource 、@PostConstruct、@PreDestroy等注解就必须声明CommonAnnotationBeanPostProcessor

3.如果想使用@PersistenceContext注解,就必须声明PersistenceAnnotationBeanPostProcessor的Bean。

4.如果想使用 @Required的注解,就必须声明RequiredAnnotationBeanPostProcessor的Bean。

使用隐式地向 Spring容器注册这4个BeanPostProcessor :

  • AutowiredAnnotationBeanPostProcessor、
  • RequiredAnnotationBeanPostProcessor、
  • CommonAnnotationBeanPostProcessor以及
  • PersistenceAnnotationBeanPostProcessor

是用来使上述注解起作用的,也就是说激活已经在application context中注册的bean。
之所以这样说是因为仅能够在已经在已经注册过的bean上面起作用。对于没有在spring容器中注册的bean,它并不能执行任何操作,也就是说如果你并没有spring容器中注册过bean(spring配置文件中配置bean就是注册),那么上述的那些注解并不会在你未注册过的bean中起作用。

做了要做的事情,还额外支持@Component,@Repository,@Service,@Controller注解。
并且扫描base-package并且在application context中注册扫描的beans.

所以配置就不需要配置

至于该项看前缀就应该知道是springmvc所需要的注解。

相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,配置一些messageconverter。

基于纯注解配置

1.继承AbstractAnnotationConfigDispatcherServletInitializer类

在 Servlet 3.0 环境中,容器会在类路径中查找实现 javax.servlet.ServletContainerInitializer 接口的类,如果能发现的话,就会用它来配置 Servlet 容器。

Spring 提供了这个接口的实现,名为 SpringServletContainerInitializer ,这个类反过来又会查找实现 了WebApplicationInitializer 的类并将配置的任务交给它们来完成。 Spring 3.2 引入了一个 WebApplicationInitializer 的基础实现类AbstractAnnotationConfigDispatcherServletInitializer

// 示例代码出自《Spring 4实战》
package spittr.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected String[] getServletMappings() {
        return new String[] {"/"};
    }

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

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

getServletMappings方法描述前端DispatcherServlet的请求路径

getRootConfigClasses方法用于配置Spring IoC容器

getServletConfigClasses方法用于初始化DispatcherServlet上下文

WebConfig是基于java类的配置文件

附:基于IDEA的SpringMVC + Maven项目结构配置

  1. 搭建maven工程

  1. 添加web框架

3、将应用打包,等待部署到服务器上

4、将应用部署到服务器上(以Tomcat为例)

参考