近段时间使用SSM框架进行项目开发,在经过深入学习和项目实战后,我觉得掌握框架的使用和底层原理 先要从文件的配置开始入手,搞清楚控制关系从而进行深入的研究。下面是我在学习中的一些笔记,主要是其他框架以及工具组建与spring框架的集成配置,有不对的地方 或者 好的建议 希望大家能够指出,共同分享,共同进步。
一、web.xml的配置 基本的要配置对 service、dao、controller的管理配置
<!--监听器配置(用来加载(用来加载Spring的根容器)管理业务类对象和数据访问层对象 即service和Dao) 此配置要加载管理业务类对象和数据访问对象的配置文件-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
配置加载所有spring的相关配置
<!--此路径说明 加载类路径下的spring文件夹下 以spring开头的所有xml文件-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-*.xml</param-value>
</context-param>
<!--配置前端控制器 用来管理普通控制器即Controller 此配置要加载的配置文件是mvc-servlet.xml-->
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/mvc-servlet.xml</param-value>
</init-param>
<!-- 配置上传下载 -->
<load-on-startup>1</load-on-startup>
<multipart-config>
<max-file-size>1000000</max-file-size>
</multipart-config>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
此外如果使用安全框架、缓存之类的工具 需要在web.xml中配置
二、前端控制器xml文件的配置
前端控制器是用来管理控制器的 所以这里要配置对控制器所在包的扫描 用来加载控制器
<!--配置控制器地址 通过扫描控制器所在的包实现控制器的管理-->
<context:component-scan base-package="com.lhl.ysyx.controller"/>
因为客户端发送请求首先访问的前端控制器 所以一些访问jsp页面资源的 解析配置也在这里配置
以及对控制器中方法返回值的数据格式配置 也在此
<!--配置内部资源视图解析 只对请求转发有效果-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--配置说明将控制器方法返回对象转化为json格式数据输出-->
<mvc:annotation-driven/>
<!--配置默认首页-->
<mvc:view-controller path="/" view-name="redirect:/safty/login_to"/>
<!-- 允许访问静态资源 -->
<mvc:default-servlet-handler/>
三、接下来是对业务逻辑层、数据访问层等的配置 根据不同的层创建相应的xml文件
例如:1、spring-dao.xml 进行spring管理数据库访问的配置 就是业务中与数据库进行数据交互的dao接口 以及放sql语句的xml映射文件
<!--配置SqlSession工厂 配置映射文件的路径-->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
xml映射文件的路径
<property name="mapperLocations" value="classpath*:mybatis_mapper/**/*.xml" />
</bean>
<!--配置映射器(交给Spring管理)-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.lhl.ysyx.dao" />
</bean>
2、spring-ds.xml 进行数据源配置 即数据库连接池的配置 提供与数据库的连接
<!--配置properties文件 读取属性文件信息-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--配置druid数据源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="filters" value="stat" />
<property name="maxActive" value="20" />
<property name="initialSize" value="1" />
<property name="maxWait" value="60000" />
<property name="minIdle" value="1" />
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="poolPreparedStatements" value="true" />
<property name="maxOpenPreparedStatements" value="20" />
<property name="asyncInit" value="true" />
</bean>
3、spring-service.xml 进行业务逻辑层的配置 交给spring管理
<!--配置业务类所在的包 用来扫描业务类-->
<context:component-scan base-package="com.lhl.ysyx.service"/>
<!--配置事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!--配置事务通知-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!--
propagation="REQUIRED" 事务传播规则
-->
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" rollback-for="java.lang.Exception" />
</tx:attributes>
</tx:advice>
<!--事务通知和事务管理器通过 事务管理器的id关联 事务切面和事务通知通过事务通知的id关联-->
<!--配置事务切面 expression属性表示Spring切面切入的点 从业务接口切入 会对业务层方法的执行出现异常时进行回滚-->
<aop:config>
<aop:pointcut id="serviceOperation" expression="execution(* com.lhl.ysyx.service.*Service.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation"/>
</aop:config>
4、其他工具与spring集成的配置 也是一样单独来配置