SSM框架主要配置文件及服务器加载配置文件顺序

JAVA入门小白一枚,文章观点仅代表个人理解,不保证完全正确。

SSM框架是由Spring、SpringMVC、MyBatis三个开源框架组成的,在本人当下的理解中主要用于开发web项目。要使用SSM框架首先需要导入相应的包(具体的包请自行检索),接着开始编写配置文件。

编写配置文件的过程稍微有点复杂,但是配置好之后以后就可以重复利用。主要的配置文件有:web.xml(自动生成,在WEB-INF下),applicationContext.xml(spring配置文件,文件名可能不同,以自己的文件名为准),springMVC.xml,Mapper.xml文件(操作数据库的配置文件)。

执行一个使用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中的主要配置如下:

(1)<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
">//只要导入了相应的包,这一段配置不变

(2)<context:component-scan base-package="com.yc.*">//自动扫描base-package对应的路径下面的java文件,如果扫描到文件中带有@Service,@Component,@Repository,@Controller等这些注解的类,则把这些类注册为bean 

</context:component-scan>

(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),前端控制器中的<load-on-startup>1</load-on-startup>配置决定了前端控制器是否在容器启动时就加载,若其值大于等于0则在容器启动时加载,小于零或不设置时则不在容器启动时加载。若要在容器(服务器Tomcat)启动时就加载前端控制器,则此时暂停web.xml的加载,先去加载springMVC。

4.加载springMVC配置文件。在web.xml配置文件加载前端控制器时根据其中的相关配置<init-param></init-param>加载springMVC配置。加载控制器(第二步中未加载),自动实例化相关类以便之后直接使用不用new(controller和servse),加载视图解析器,完成springMVC配置文件的加载。

5.回到web.xml文件中,继续进行后续加载,若无后续则完成整个项目的加载。

利用SSM框架完成对数据库的增删改查操作源码项目,欢迎访问本人的github主页,自行下载。地址:https://github.com/xiBei-luo

阅读更多
版权声明: https://blog.csdn.net/decade72/article/details/79958029
个人分类: 【JAVA小白入门】
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭