最近学习《SpringInAction》感觉收获不小,以前只是使用Spring进行开发,并不清楚Spring项目是如何跑起来的,自己试了下搭建简单Spring项目。
Spring装配bean有三种主要方式:自动化配置、基于Java的显式配置和基于XML的显式配置。本项目大部分均采用自动化配置。web环境搭建则完全使用Java配置,放弃了传统的web.xml文件配置,使用maven工具进行版本管理。
环境搭建
项目使用maven进行版本控制,pom文件可以去 这里 查看。
配置DispatcherServlet
DispatcherServlet无疑是Spring MVC的核心,它负责将请求路由到其他组件中。按照传统一般在web.xml文件中进行配置,随着Servlet3 规范和Spring3.1的功能增强,现在可以尝试在Java代码中进行配置。
这里采用继承AbstractAnnotationConfigDispatcherServletInitializer类的方法快速仅需配置,这个类是WebApplicationinitializer的基础实现。当部署到Servlet3.0容器的时候,容器会自动发现它并用来配置Servlet上下文。这个类有两个抽象方法:
- getRootConfigClasses()
- getServletConfigClasses()
这两个类是做什么的呢?查阅官方文档后发现,在Spring MVC中我们其实是可以创建出多个DispatcherServlet的(只要创建多个继承自AbstractAnnotationConfigDispatcherServletInitializer的类即可)。而每个DispatcherServlet有自己的应用上下文(WebApplicationContext),这个应用上下文只针对这个DispatcherServlet有用。
这也就是getServletConfigClasses的作用,获取这个DispatcherServlet的应用上下文的配置类。而除了每个DispatcherServlet配置类的应用上下文之外,还有一个根应用上下文,这个应用上下文的作用是为了在多个DispatcherServlet之间共享Bean,比如数据源Bean,这就是getRootConfigClasses的作用,用于返回根应用上下文的配置类。Spring框架的机制会保证如果在当前DispatcherServlet的应用上下文中没有找到想要的bean时,会去根应用上下文中去找。
配置Spring MVC
过去一般采用<mvc:annotation-driven>
启用注解驱动的SpringMVC,现在仅需在用于配置的Java类上加上@EnableWebMvc注解即可。
配置RootConfig配置
这是根应用上下文的配置类,由于本次开发的web应用仅定义了一个DispatcherServlet,因此不需要什么配置。。。
@ComponentScan注解中指定扫描bean的位置。
定义控制器
|
|
用maven启动tomcat后,使用DHC插件进行接口测试
简单Spring项目算是搭建成功了。
代码在 SpringInActionDemo
下一节将继续说明如何添加对中文字符的支持和支持复杂类型。