- Spring Boot开发实战
- 陈光剑
- 1255字
- 2023-07-26 14:26:42
3.1 传统的SSM开发过程
传统的SSM(Spring + SpringMVC + MyBatis),曾经是主流的企业级架构方案:标准的MVC分层架构设计模式,将整个系统划分为模板视图(View)层、控制器(Controller)层、业务逻辑Service层、数据库访问的Dao层。我们使用Spring MVC负责请求的转发和视图管理,使用Spring核心容器实现业务对象的协作和生命周期的管理,MyBatis作为数据库ORM层的对象持久化引擎。
我们需要小心翼翼地配置pom.xml中的各种项目依赖及其版本以保证jar包不冲突。这个pom.xml将是一个很庞大的依赖配置,动辄上百行。这么多的依赖,各种版本号也都必须要对得上,不能发生版本不兼容的情况。然后,我们还需要仔细配置Spring上下文spring.xml文件。这个Spring配置文件是Spring的BeanFactory工厂进行Bean生产、依赖关系注入(装配)及Bean实例分发的“图纸总纲”。Java EE程序员必须学会并灵活应用这份“图纸”来准确地表达自己的“生产意图”。
Spring配置文件是一个或多个标准的XML文档,如果在web.xml中没有显式指定contextConfigLocation,将会使用XmlWebApplicationContext的默认的配置/WEB-INF/app-licationContext.xml。applicationContext.xml是Spring的默认配置文件,当容器启动时找不到指定的配置文档时,将会尝试加载这个默认的配置文件。
如果我们使用自定义名称的spring.xml文件,就需要在web.xml中通过配置contex-ConfigLocation参数来指定Spring的配置文件。代码示例如下:
<? xml version="1.0" encoding="UTF-8"? > <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/ xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <! -- 配置Spring --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </context-param> … </web-app>
完整的Spring配置文件spring.xml内容通常也非常庞大。
如果是Java Web项目的开发,通常还需要配置SpringMVC的上下文spring-mvc.xml这个XML。SpringMVC的上下文配置文件主要是:
org.springframework.web.servlet.DispatcherServlet
这个DispatcherServlet类在初始化过程中使用。DispatcherServlet提供Spring Web MVC的集中访问点,负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。我们需要在spring-mvc.xml中配置默认的注解映射的支持、自动扫描包路径、视图模板引擎等等一系列配置,完整的spring-mvc.xml配置文件内容参考示例工程源代码。
在Web应用中的web.xml中通常还需要配置DispatcherServlet,在应用程序目录中的classpath: spring-mvc.xml配置springMVC的配置文件位置。一个配置实例如下:
<! -- 配置springmvc --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</ servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
这样,Spring Web MVC框架将加载“classpath: spring-mvc.xml”来进行初始化上下文而不是约定的默认文件路径“/WEB-INF/[servlet名字]-servlet.xml”。
项目完整的web.xml配置文件的内容参考示例工程。
提示
本节介绍的传统SSM实例工程源代码参考:https://github.com/KotlinSpring Boot/spring_mybatis_demo
web.xml文件是用来初始化整个项目的配置信息的。比如Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等。web.xml又叫部署描述符文件,是在Servlet规范中定义的,是web应用的配置文件。部署描述符文件就像所有XML文件一样,必须以一个XML头开始。这个头声明可以使用的XML版本并给出文件的字符编码。DOCYTPE声明必须立即出现在此头之后。这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并指定管理此文件其余部分内容的语法的DTD(Document Type Definition,文档类型定义)。所有部署描述符文件的顶层(根)元素为web-app。请注意,XML元素是大小写敏感的。因此,web-App和WEB-APP都是不合法的,web-app必须用小写。
web.xml的加载顺序是:
<context-param>→<listener>→<filter>→<servlet>
其中,如果web.xml中出现了相同的元素,则按照在配置文件中出现的先后顺序来加载。另外,当我们使用Spring的@Service、@Controller等注解的时候,需要告诉Spring去哪里扫描并注册这些Bean,这个配置在spring.xml中,例如:
<! -- 扫描service、dao组件 --><context:component-scan base-package="com.easy. Spring Boot"/>
我们在上一章中已经知道了:
<context:component-scan base-package="com.easy.Spring Boot"/>
这个配置等价于下面这段使用注解配置的代码:
@ComponentScan(basePackage="com.easy.Spring Boot")
在Spring Boot中就是大量使用基于注解的配置,从而去除XML配置。
传统的Java Web项目的开发过程中,通常还需要单独去配置Tomcat服务器,然后在IDE中配置集成。这个过程也比较费时。