ssm框架搭建(主要配置步骤)

来源:互联网 发布:爱普生tx800清零软件 编辑:程序博客网 时间:2024/06/07 14:23

本文介绍使用传统spring方式搭建restful风格的ssm应用的主要步骤,使用springboot方式也可以作为参考(毕竟springboot是用来简化spring配置而不是取代它)

项目启动流程:

1 启动tomcat

2 load app,读取web.xml文件

3 触发Spring监听器,读取配置文件,初始化spring容器(主要包含 数据源 事务 与mybatis整合 注解扫描) 

4 加载springMVC的核心控制器(DispatcherServlet),初始化springMVC容器

具体配置:

1 web.xml中配置spring监听器,载入Spring的ApplicationContext,并指定context-param,表明需要加载的文件

<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext*.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

2 web.xml中配置过滤器,解决PUT、DELETE请求无法提交表单的问题

<filter><filter-name>HiddenHttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class></filter><filter-mapping><filter-name>HiddenHttpMethodFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

3 web.xml中配置SpringMVC的入口

<servlet><servlet-name>taotao-manage</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/taotao-manage-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>taotao-manage</servlet-name><!-- 以/rest/开头的请求将进入SpringMVC --><url-pattern>/rest/*</url-pattern></servlet-mapping>

4 spring核心配置

(1)加载properties资源文件

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><!-- 允许JVM参数覆盖 --><property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /><!-- 忽略没有找到的资源文件 --><property name="ignoreResourceNotFound" value="true" /><!-- 配置资源文件 --><property name="locations"><list><value>classpath:jdbc.properties</value><value>classpath:upload.properties</value><value>classpath:redis.properties</value><value>classpath:env.properties</value><value>classpath:httpclinet.properties</value><value>classpath:rabbitmq.properties</value></list></property></bean>

(2)注解扫描(@Service @Repository)

<context:component-scan base-package="com.taotao"/>

(3)数据源
<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"destroy-method="close"><property name="driverClass" value="${jdbc.driver}" /><property name="jdbcUrl" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="idleConnectionTestPeriod" value="60" /><property name="idleMaxAge" value="30" /><property name="maxConnectionsPerPartition" value="100" /><property name="minConnectionsPerPartition" value="5" /></bean>

(4)事务控制
<bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><!-- 定义事务策略 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!--所有以query开头的方法都是只读的 --><tx:method name="query*" read-only="true" /><!--其他方法使用默认事务策略 --><tx:method name="*" /></tx:attributes></tx:advice><!-- 定义AOP切面处理器 --><bean class="com.taotao.manage.datasource.DataSourceAspect" id="dataSourceAspect" /><aop:config><!-- pointcut元素定义一个切入点,execution中的第一个星号 用以匹配方法的返回类型,这里星号表明匹配所有返回类型。 com.abc.dao.*.*(..)表明匹配cn.itcast.mybatis.service包下的所有类的所有 方法 --><aop:pointcut id="myPointcut" expression="execution(* com.taotao.manage.service.*.*(..))" /><!--将定义好的事务处理策略应用到上述的切入点 --><aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut" /><!-- 将切面应用到自定义的切面处理器上,-9999保证该切面优先级最高执行 --><aop:aspect ref="dataSourceAspect" order="-9999"><aop:before method="before" pointcut-ref="myPointcut" /></aop:aspect></aop:config>

(5)整合mybatis
<bean class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 配置数据源 --><property name="dataSource" ref="dataSource"/><!-- 指定全局配置文件 --><property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/><!-- 指定所有的Mapper.xml --><property name="mapperLocations" value="classpath:mybatis/mappers/**/*.xml"/><!-- 配置别名包 --><property name="typeAliasesPackage" value="com.taotao.manage.pojo"/></bean><!-- Mapper接口扫描器 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.taotao.manage.mapper"/></bean>

5 springMVC核心配置

(1)配置注解驱动和注解扫描
<mvc:annotation-driven/><context:component-scan base-package="com.taotao.cart.controller"/>
(2)配置内部视图解析器:由于项目采用jsp作为视图,统一放在/WEB-INF/jsp/目录下,所以需要配置内部视图解析器(路由规则)
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"/><property name="suffix" value=".jsp"/></bean>
(3)配置文件上传解析器:项目中包含文件上传功能时需要配置
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!-- 设置最大的文件大小 --><property name="maxUploadSize" value="5242880"/></bean>

到此为止,采用传统spring方式构建的restful风格的ssm应用搭建完毕

ps :

1 spring作为一个IoC容器,可以整合现阶段流行的各种技术,项目中需要使用其他技术,可以参考spring整合mybatis的方式,将核心对象托管到spring中。

2 注意spring和springMVC的关系、spring容器和springMVC容器的联系,才能更好理解上述配置的原理。

3 springboot作为一种更加便捷使用spring的方式正在逐渐流行,学习它的方式可以参照上面的整合过程去思考(哪些功能需要交给spring管理,该如何装配)just another way~~

原创粉丝点击