文件目录结构
handler层
1.spring-mvc.xml
注册handler层内对应的对象
<!--注册组件扫描,扫描com.hrm.下所有的handler包下注册的@cotroller-->
<context:component-scanbase-package="com.hrm.**.handler"/>
<!--注解驱动,需要类型转换时自动转换-->
<mvc:annotation-driven/>
注意:导入时应导入mvc的约束文件
service层
2.spring-service.xml
注册service层内对应的对象
<!--注册组件扫描,扫描com.hrm.下所有的service包下注册的@service-->
<context:component-scan base-package="com.hrm.**.service"/>
dao层
3.jdbc.properties
数据库属性文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///hrm
jdbc.username=root
jdbc.password=111
4.mybatis.xml
mybatis属性文件
<!--注册别名-->
<typeAliases>
<package name="com.hrm.commons.beans"/>
</typeAliases>
<!--注册映射文件-->
<mappers>
<package name="com.hrm.**.dao"/>
</mappers>
5.spring-ds.xml
配置数据源
<!--加载数据库属性文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--引入DruidDataSource数据源-->
<bean id="myDataSource" class="com.alibaba.druid.pool.DruidDataSource">
<!--四要素,从属性文件中获取值(避免修改spring配置文件)-->
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
6.spring-mybatis.xml
生成dao的代理对象(扫描包,给指定包下所有的接口生成代理对象)
<!--SqlSessionFactoryBean生成SqlSessionFactory对象-->
<bean id="mySqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--引入数据源(spring-ds.xml)-->
<property name="dataSource" ref="myDataSource"/>
<!--加载mybatis属性文件-->
<property name="configLocation" value="classpath:mybatis.xml"/>
</bean>
<!-- MapperScannerConfigurer生成代理对象-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--扫描com.hrm.下所有的dao包-->
<property name="basePackage" value="com.hrm.**.dao"/>
<!--将mySqlSessionFactory对象注入sqlSessionFactoryBeanName属性里-->
<property name="sqlSessionFactoryBeanName" value="mySqlSessionFactory"/>
</bean>
事务配置
7.spring-tx.xml
<!--注册平台事务管理器-->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!--数据源(spring-ds.xml)-->
<property name="dataSource" ref="myDataSource"/>
</bean>
<!--注册事务通知-->
<tx:advice id="txAdvice" transaction-manager="txManager">
<!--指定连接点-->
<tx:attributes>
<!--方法连接点增删改查-->
<tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED"/>
<tx:method name="remove*" isolation="DEFAULT" propagation="REQUIRED"/>
<tx:method name="modify*" isolation="DEFAULT" propagation="REQUIRED"/>
<!--find方法只读-->
<tx:method name="find*" isolation="DEFAULT" propagation="REQUIRED" read-only="true"/>
</tx:attributes>
</tx:advice>
<!--aop配置,指定切入点-->
<aop:config>
<!--advice-ref引入通知,pointcut指定对应切入点方法(所有service方法)-->
<aop:advisor advice-ref="txAdvice" pointcut="execution(* *..service.*.*(..))"/>
</aop:config>
配置中央调度器,字符编码过滤器
8.web.xml
中央调度器
<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-*.xml</param-value>
</init-param>
<!--服务器启动时就加载中央调度器-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--发送.do结尾请求交给此servlet处理-->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
字符编码过滤器
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<!--编码方式-->
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<!--强制编码-->
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<!--过滤所有请求-->
<url-pattern>/*</url-pattern>
</filter-mapping>