本人苦逼学生一枚,马上就要毕业,面临找工作,实在是不想离开学校.在老师的教导下学习了spring mvc ,配置文件实在繁琐,因此网上百度学习了spring mvc 全注解方式完成spring的装配工作;
废话不多说了上干货,其实我也没怎么理解不过简单的运行了一个spring mvc 全注解项目,也不能说是全注解,因为保留了web.xml和spring-serlvet.xml文件,(可能有的童鞋会说,这样配置可能对以后的修改不方便,无法达到只修改配置文件就切换某些环境。其实不是,零配置文件只是修改了类定义的配置,并没有修改之前配置文件的灵活性。我想无论谁也不会在之前的web.xml中去修改某个servlet的配置吧。况且这些所谓的配置文件灵活性,只是针对某个值,我们可以写在我们的properties文件里面,而且Spring对这类配置文件有很好的支持,而且使用很方便,有兴趣的童鞋可以去search一下。所以请打消这个配置不灵活的念头)。
首先我们看一下项目结构
项目采用maven管理,入门的同学应该都知道maven的优点,可以学习一下.
下面看一下核心的配置java类
1 package cn.edu.lhs.config; 2 import org.springframework.context.annotation.Bean; 3 import org.springframework.context.annotation.ComponentScan; 4 import org.springframework.context.annotation.Configuration; 5 import org.springframework.web.servlet.config.annotation.EnableWebMvc; 6 import org.springframework.web.servlet.view.JstlView; 7 import org.springframework.web.servlet.view.UrlBasedViewResolver; 8 9 @Configuration 10 @ComponentScan("cn.edu.lhs") 11 @EnableWebMvc 12 public class webConfig { 13 /** 14 * jsp视图解析器 15 */ 16 @Bean 17 public UrlBasedViewResolver setupviewResolver(){ 18 UrlBasedViewResolver resilver=new UrlBasedViewResolver(); 19 resilver.setPrefix("WEB-INF/views/"); 20 resilver.setSuffix(".jsp"); 21 resilver.setViewClass(JstlView.class); 22 return resilver; 23 24 25 } 26 }
以上代码为配置spring-mvc.xml下的jsp视图解析的
让后就是去web.xml
package cn.edu.lhs.config; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRegistration.Dynamic; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet; @ComponentScan("cn.edu.lhs") public class webInitalizer implements WebApplicationInitializer { public void onStartup(ServletContext servletContext)throws ServletException{ AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext(); ctx.register(webConfig.class); ctx.setServletContext(servletContext); Dynamic servlet=servletContext.addServlet("dispatcher", new DispatcherServlet(ctx)); servlet.addMapping("/"); servlet.setLoadOnStartup(1); } }
这里以webApplicationINitializer接口,利用AnnotationCOnfigwebApplicationCOntext 类
寄存器
public void register(Class <?> ... annotatedClasses)
请注意,AbstractApplicationContext.refresh()
为了使上下文完全处理新类,必须调用它们。
- 指定者:
register
在界面AnnotationConfigRegistry
- 参数:
annotatedClasses
- 一个或多个注释类,例如@Configuration
类- 也可以看看:
scan(String...)
,loadBeanDefinitions(DefaultListableBeanFactory)
,AbstractRefreshableConfigApplicationContext.setConfigLocation(String)
,AbstractApplicationContext.refresh()
注册配置类
现在就可以删除web.xml里的东西了
项目代码:https://github.com/tsxylhs/spring-mvc