SpringMVC 通过java类配置(不通过web.xml和xml 配置文件方式)

介绍:

springMVC 常用的配置方式是在web.xml 中配置dispatcherservlet 和 ContextConfigLocation 和一些拦截器,然后或是配置applicationContext-mvc.xml 然后在controller 等类中加上注解的方式来启动

其实不一定非要用web.xml 来进行配置,在servlet3.0 标准中就没有web.xml 配置文件了,springMVC 同样也可以不需要依赖web.xml文件,而是通过创建类的方式配置

步骤

1.需要创建一个类继承自AbstractAnnotationConfigDispatcherServletInitializer,这个类的作用相当于DispathcerServlet

package before.springmvc;

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

/**
 * SpringMVC 非web.xml 配置方式
 * 
 * 传统  DispatcherServlet 配置在 web.xml 的初始化方式
 * 
 * 而 servlet 3.0 则是
 * 1. 配置 DispatcherServlet 需要创建一个web 初始化类,继承自 AbstractAnnotationConfigDispathcerServletInitializer
 * 
 * @author Administrator
 *
 */
public class OurWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{

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

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

	@Override
	protected String[] getServletMappings() {//将 DispatcherServlet 映射到 "/" 路径
		return new String[] { "/" };
	}

}

2创建一个RootConfig类,指定扫描包位置

此类类似于application.xml ,事务,数据库等bean 配置,需要配置到本类, 类似于applicationContext 上下文

package before.springmvc;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

/**
 * 3. 配置
 * @author Administrator
 *
 */

@Configuration
//配置注解扫描的包路径
@ComponentScan( basePackages={"com.game"}, 
                 excludeFilters = { @Filter(type=FilterType.ANNOTATION,value=EnableWebMvc.class)}
               )
public class RootConfig {

}

3.创建一个类继承WebMvcConfigurerAdapter 类,相当于视图解析器的作用,同时配置扫描controller 的路径

类似于application-mvc.xml 文件,此文件的配置大部分都可在此类中配置

package before.springmvc;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

/**
 * 配置 SpringMVC 视图解析类WebConfig ,需要继承自 WebMvcConfigureAdapter
 * @author Administrator
 *
 */

@Configuration
@EnableWebMvc //启动 springMVC
@ComponentScan(value = {"com.game.controller"})	//配置组件扫描
public class WebConfig extends WebMvcConfigurerAdapter{
	
	//配置jsp 视图解析器
	@Bean
	public ViewResolver viewResolver(){
		InternalResourceViewResolver resolver = new InternalResourceViewResolver();
		resolver.setPrefix("/view");//设置预加载路径/目录
		resolver.setSuffix(".jsp");  //设置允许后缀
		resolver.setExposeContextBeansAsAttributes(true);
		return resolver;
	}
	
	//配置静态资源的处理
	@Override
	public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
		configurer.enable();//对静态资源的请求转发到容器缺省的servlet,而不使用 DispatcherServlet
	}

}

完成这三个步骤就可以在具体类中使用controller 注解和servlet注解等,无需web.xml 文件和 application-mvc.xml文件就可以启动项目

参考:https://www.cnblogs.com/chry/p/6239510.html


猜你喜欢

转载自blog.csdn.net/kzcming/article/details/80741743
今日推荐