SpringMVC之注解开发

闲来无事,初学SpringMVC多看了下基于java的开发


package javaConfig;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
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;

@Configuration//注明配置类
@EnableAspectJAutoProxy//开启切面代理,可以不要可以要
@EnableWebMvc//开启mvc配置
@ComponentScan(basePackages={"Action"})//扫描配置包
//mvc静态资源
public class mvcConfig extends WebMvcConfigurerAdapter{
	//配置视图
	@Bean("viewResolver")
	public InternalResourceViewResolver internalResourceViewResolver(){
		InternalResourceViewResolver inResolver =  new InternalResourceViewResolver();
		inResolver.setPrefix("/");
		inResolver.setSuffix(".jsp");
		return inResolver;
	}
	@Override
	public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
		// TODO Auto-generated method stub
		configurer.enable();//处理静态资源
	}
}


在servlet3.0后,serlvet会寻找ServletContainerInitializer的实现作为servlet的配置类,其次才会在web.xml进行配置


SpringServletContainerInitializer--ServletContainerInitializer

ServletContainerInitializer找到SpringServletContainerInitializer后,观察源码可以知道,SpringServletContainerInitializer他会寻找实现WebApplicationInitializer的类,刨根究底最后就是找AbstractAnnotationConfigDispatcherServletInitializer的子类,继承了这个抽象类,实现里面的方法,相当于配置了SpringMVC的核心DispatcherServlet


比如我自己的:

package javaConfig;

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

//servlet3.0容器下会默认查找一个servlet初始化的一个类,然后才去查找web.xml
public class initServlet extends AbstractAnnotationConfigDispatcherServletInitializer {

	@Override
	protected Class
   
   [] getRootConfigClasses() {
		// TODO Auto-generated method stub
		return new Class[]{myConfig.class};
	}

	@Override
	protected Class
   
   [] getServletConfigClasses() {
		// TODO Auto-generated method stub
		return new Class[]{mvcConfig.class};
	}

	@Override
	protected String[] getServletMappings() {
		// TODO Auto-generated method stub
		return new String[]{"/"};
	}
	
}


如果还需要配置其他的filter或者servlet,方法有3种。

1.直接在web.xml里面配置,或者通过java注解配置如@WebServlet

2.在AbstractAnnotationConfigDispatcherServletInitializer还可以通过重载相应的方法进行注册(只能注册filter)

3.在其他实现了WebApplicationInitializer的子类里进行注册(实现onStartup方法)


对DispatcherServlet进行额外的配置:

在AbstractAnnotationConfigDispatcherServletInitializer的实现类中重载

@Override
protected void customizeRegistration(Dynamic registration) {
// TODO Auto-generated method stub
super.customizeRegistration(registration);
}


参考文献(Spring in action)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值