一、前言
SSM框架是由Spring、SpringMVC、MyBatis三个开源框架组成的,在本人当下的理解中主要用于开发web项目。要使用SSM框架首先需要导入相应的包(具体的包请自行检索),接着开始编写配置文件。
编写配置文件的过程稍微有点复杂,但是配置好之后以后就可以重复利用。主要的配置文件有:web.xml(自动生成,在WEB-INF下),applicationContext.xml(spring配置文件,文件名可能不同,以自己的文件名为准),springMVC.xml,Mapper.xml文件(操作数据库的配置文件)。
二、Spring+SpringMVC+Mybatis搭建流程
执行一个使用SSM框架搭建的javaWEB工程时,服务器加载顺序如下:
1.读取web.xml配置文件。web.xml配置文件中主要的配置有:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>//根据指定的路径区读取spring配置文件。
注意:此时服务器会去加载spring配置文件,暂停本段配置之后的代码执行;
2.加载spring配置文件。applicationContext.xml中的主要配置如下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- Tips: 1. 上述只需要要导入了相应的包,这一段配置不变 -->
<context:component-scan base-package="com.yc.*">
</context:component-scan>
<!-- 2. 自动扫描base-package对应的路径下面的java文件,如果扫描到文件中带有@Service,@Component,@Repository,@Controller等这些注解的类,则把这些类注册为bean -->
(3).<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/kjsb" />
<property name="username" value="root" />
<property name="password" value="root" />
<property name="defaultAutoCommit" value="false" />
</bean>//配置数据源,操作数据库的配置
(4).<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/yc/dao/*.xml" />
<property name="configLocation" value="classpath:mybatis.xml" />
</bean>//生成mapper接口的代理(简而言之就是,dao层中只定义接口,spring使用了这个配置之后就会自动根据mapper.xml文件中的语句生成dao层的实现类区操作数据库)
(5).<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.yc" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>//sqlSession配置,只需要改变<property name="basePackage" value="com.yc" />中的value路径就行,其他的不变(作用是自动生成sqlSessionFactory去执行sql语句)
<bean id="tm" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>//数据源配置
(6).<tx:advice id="ta" transaction-manager="tm">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="check*" propagation="SUPPORTS" read-only="true" />
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
</tx:attributes>
</tx:advice>//事务配置,即事务管理器作用是对一系列的数据库操作进行统一的自动的提交和回滚操作
(7).<aop:config>
<aop:pointcut expression="execution(* com.yc.service.*.*(..))" id="tp" />
<aop:advisor advice-ref="ta" pointcut-ref="tp" />
</aop:config>//AOP配置,执行日志文件等操作(AOP是spring中的重要概念,具体使用方式作用等自行搜索)
至此spring配置文件加载完成,服务器回到web.xml文件中进行后续的执行:
3、回到web.xml配置文件中继续按顺序从上到下加载。加载监听器;加载过滤器;加载前端控制器(即servlet或者springMVC),前端控制器中的1配置决定了前端控制器是否在容器启动时就加载,若其值大于等于0则在容器启动时加载,小于零或不设置时则不在容器启动时加载。若要在容器(服务器Tomcat)启动时就加载前端控制器,则此时暂停web.xml的加载,先去加载springMVC。
4、加载springMVC配置文件。在web.xml配置文件加载前端控制器时根据其中的相关配置加载springMVC配置。加载控制器(第二步中未加载),自动实例化相关类以便之后直接使用不用new(controller和servse),加载视图解析器,完成springMVC配置文件的加载。
5、回到web.xml文件中,继续进行后续加载,若无后续则完成整个项目的加载。
利用SSM框架完成对数据库的增删改查操作源码项目。地址:https://github.com/xiBei-luo
Thinkingcao
认证博客专家
Java
Spring Boot
微服务
2019年度博客之星、博客专家,专注架构、Java、Spring、SpringBoot、SpringCloud、微服务、分布式、中间件、源码分析、JVM性能调优、K8S等领域微信搜索公众号:「Thinking曹」,一个执着于架构的JAVA基层码农,每天带你学习新知识。