Spring4 @EnableWebMvc 纯注解启动

Spring4 @EnableWebMvc 纯注解启动
一、WebConfig
想要以Java形式定制默认的配置,你可以简单的实现WebMvcConfigurer接口,或者继承WebMvcConfigurerAdapter并重写需要的方法

@Configuration表示这是Java配置类;@EnableWebMvc注解用于启动Spring MVC特性。

package com.my;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
/**
 * MVC 配置类
 * @author fly for fun
 *
 */
@Configuration
@ComponentScan("com.my")
@EnableWebMvc
public class MyWebConfig extends WebMvcConfigurerAdapter {
    /**
     * 配置JSP视图解析器
     * 如果没有配置视图解析器。Spring会使用BeanNameViewResolver,通过查找ID与逻辑视图名称匹配且实现了View接口的beans
     * @return
     */
    @Bean
    public InternalResourceViewResolver  setupViewResolver() {
    	InternalResourceViewResolver  resolver = new InternalResourceViewResolver ();
        /**设置视图路径的前缀*/
        resolver.setPrefix("/WEB-INF/");
        /**设置视图路径的后缀*/
        resolver.setSuffix(".jsp");
        return resolver;
    }
}
二、WebInitializer
Spring MVC配置核心分发控制器Servlet,即DispatcherServlet,传统做法是直接使用web.xml进行配置.
现在要做的是基于注解配置,需要继承AbstractAnnotationConfigDispatcherServletInitializer。
AbstractAnnotationConfigDispatcherServletInitializer这个类负责配置DispatcherServlet、初始化Spring MVC容器和Spring容器。
加载过程:
1、当DispatcherServlet启动时,会创建一个Spring MVC应用容器并开始加载配置文件中定义好的beans。
通过getServletConfigClasses()方法,可以获取由DispatcherServlet加载的定义在WebConfig.class中的beans,例如:
controllers(控制器)、view resolvers(视图解析器)和处理器映射(handler mappings)

2、还有另一个Spring应用容器,这个容器由ContextLoaderListener创建,加载 @Repository,@Service等

package com.my;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
/**
 * Java配置DispatcherServlet
 * @author fly for fun
 */
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
	/**获取Spring应用容器的配置文件*/
    @Override
    protected Class[] getRootConfigClasses() {
        return null;
    }
    /**负责获取Spring MVC应用容器,这里传入预先定义好的MyWebConfig.class*/
    @Override
    protected Class[] getServletConfigClasses() {
        return new Class[] { MyWebConfig.class };
    }
    /**
     * 负责指定需要由DispatcherServlet映射的路径,
     * 这里给定的是"/",意思是由DispatcherServlet处理所有向该应用发起的请求
     * 
     * */
    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }
}

三、MyController

package com.my;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/***
 * 编写简单的控制器
 * @author fly for fun
 *
 */
@Controller
public class MyWebController {

	@RequestMapping(value = "/welcome", method = RequestMethod.GET)
	public String home() {
		return "welcome";
	}
}
四、pom文件


  4.0.0
  com.my
  myWebProject
  war
  0.0.1-SNAPSHOT
  myWebProject Maven Webapp
  http://maven.apache.org
  
    
      junit
      junit
      3.8.1
      test
    
    
		org.springframework
		spring-webmvc
		4.3.7.RELEASE
	  
	   
            javax.servlet  
            javax.servlet-api  
            3.1.0  
          
          
            javax.servlet.jsp  
            javax.servlet.jsp-api  
            2.3.1  
          
          
            javax.servlet  
            jstl  
            1.2  
          
  
   
          
              
                  
                    org.apache.maven.plugins  
                    maven-compiler-plugin  
                    3.2  
                      
                        1.8  
                        1.8  
                      
                  
                  
                    org.apache.maven.plugins  
                    maven-war-plugin  
                    2.4  
                      
                        src/main/webapp  
                        myWebProject  
                        false  
                      
                  
              
          
        myWebProject  
      

五、JSP

  
  
  
  
HelloWorld page  
  
  
    Welcome to myWebProject! 
  
  
六、运行结果



你可能感兴趣的:(web开发)