关闭

[置顶] JavaWeb---框架SpringMvc+Mybatis开发项目第一季(共三季)

标签: SpringMvcMybatis框架
684人阅读 评论(0) 收藏 举报
分类:

勿忘初衷(Stay Real)...走向了JAVA程序员的道路.路途是坎坷的,学习过程中有很多问题需要去解决,曾经想平平淡淡做个简单的猿就可以了,但在看清现实后,顺带在那仅存不多的上进心的促进下,我还是选择要干还是干的Perfect,do best.

开发有一段时间了.目前虽然还是小菜鸟,但是我相信我会突破界限达到自己想要的高度.对于JAVA开发,我是很热爱的,自己也喜欢写一些简单的小框架,供自己娱乐.对于开发的框架中,Spring框架是很NB的,这毋庸置疑.不过谁都有谁的好处,我是比较看好这个框架的.所以也去了解了一些.目前仅仅只是简单的会用一些框架做一些项目.SSH(下次更新就是这三大框架的使用和个人总结)三大框架也是独立开发过项目的,不过我还是比较喜欢用SpringMvc+Mybatis这套框架去开发项目.

那么我就来谈谈自己对这套框架的使用,和个人见解与总结(不喜勿喷,若有理解错误之处,希望大家一起指出,共同进步):

1.首先我在开发项目的时候喜欢用Maven去搭建我的项目,使用Maven把我的项目基本的模型搭建出来,并且把需要的jar包通过Maven引入.------Maven的使用介绍我会在后续补上.

2.使用Maven创建好Web项目后,就可以开始搭建框架了.

----------------------------------------------------------

搭建SpringMvc框架----用Mvc设计模式划分,它其中包括了控制层Controller和视图层View,将Spring和Mybatis紧密相连,完成Model层,其中用Mybatis来完成对数据库的操作.

开始搭建框架:

1.将SpringMvc、Mybatis和项目需要的jar包引入,这个我是通过Maven构建的之前有说过,当然大家也可以用传统方式,把jar放入WEB-INF/lib中。

2.创建配置文件,第一个配置文件--------application-context.xml(Spring主容器配置)

命名空间和对应的域,既然是主容器那么除了必要的beans、context、tx,还需要加入aop来声明事务。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	   xmlns:p="http://www.springframework.org/schema/p"
	   xmlns:context="http://www.springframework.org/schema/context" 
	   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-4.0.xsd
    http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-4.0.xsd  
    http://www.springframework.org/schema/tx   
    http://www.springframework.org/schema/tx/spring-tx-4.0.xsd   
    http://www.springframework.org/schema/context   
    http://www.springframework.org/schema/context/spring-context-4.0.xsd  
 ">
然后开始第一步,扫描注解组件:<context:component-scan>

 	<context:component-scan base-package="com.cx">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
	</context:component-scan>
扫描通过Spring添加的注解组件.这里注意:本来扫描包路径下面的全部的,这里我把Controller注解排除扫描了,也就是这里除了@controller注解其他的注解都会被扫描掉。

**这里是做法就是为了能让后面的事务起作用而有意为之。这里是我们配置的开端,我们还没有配置事务,如果过早的把@Controller也给创建Bean那么我们在Controller里面准备做的service事物处理就会没有绑定上去,导致后面的事务失效...

  继续配置:引入jdbc配置文件,(将jdbc连接需要的信息放到配置文件里面单独存储,便于更改)

<context:property-placeholder  location="classpath:config/jdbc.properties"  />
然后创建jdbc数据源,---dataSource:

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init"   destroy-method="close" >
	    <property name="driverClassName" value="${jdbc_driverClassName}" />
	    <property name="url" value="${jdbc_url}" />
	    <property name="username" value="${jdbc_username}"/>
	    <property name="password" value="${jdbc_password}"/>
	    <!-- 连接池最大使用连接数 -->
	    <property name="maxActive" value="20"/>
	    <!-- 初始化连接大小 -->
		<property name="initialSize" value="1"/>
		<!-- 获取连接最大等待时间 -->
	 	<property name="maxWait" value="60000"/>
	 	<!-- 自动清除无用连接 -->
		<property name="removeAbandoned" value="true"/>
	 	<!-- 清除无用连接的等待时间 -->
	 	<property name="removeAbandonedTimeout" value="180"/>
	 	<!-- 连接属性 -->
	    <property name="connectionProperties" value="clientEncoding=UTF-8"/>
	</bean>

创建SqlSession:

<span style="white-space:pre">	</span><bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation">
			<value>classpath:config/mybatis-config.xml</value>
		</property>
//这里是当mybatis的xml文件和mapper接口不在同一个包下面的时候,我们就需要配置进行装载mapper.xml
		<property name="mapperLocations">			
		         <value>classpath*:/com/cx/mapper/**/*Mapper.xml</value>
		</property>
	</bean>

这里我配置加入本地配置文件mybatis-config.xml将其中的配置信息注入到sqlSession中,

完成对mybatis的sqlSession的构建。

然后我们把mapper接口在注入进去,

这里不用在单独加入property来添加sqlsession,MapperScannerConfigurer会自动加载的,

由于上面配置了自动装载mapper.xml,

所以在这里可以让我们的接口和xml不在同一个包中也可,

但是我们要把所有的mapper接口都要扫描到。。没扫描到的接口,你懂的。。。

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
<property name="basePackage" value="com.cx.mapper"/>  
</bean> 

最后我们在配置上事务:

-------------事务管理

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
-------------通过tx;advice来配置事务信息

<tx:advice id="serviceAdvice" transaction-manager="transactionManager">  
    	    <tx:attributes>   
	        <tx:method name="insert*" propagation="REQUIRED" rollback-for="Throwable"/> 
	        <tx:method name="del*" propagation="REQUIRED" rollback-for="Throwable"/>  
	        <tx:method name="update*" propagation="REQUIRED" rollback-for="Throwable"/>
	        <tx:method name="add*" propagation="REQUIRED" rollback-for="Throwable"/> 
	        <tx:method name="save*" propagation="REQUIRED" rollback-for="Throwable"/> 
	        <tx:method name="*" read-only="true"/>  
    	    </tx:attributes>  
 	</tx:advice> 
-------------我自己定义了一个切面类,用来记录事务处理前后的数据库操作信息

<bean id="LogAop" class="com.cx.aop.LogAop" />
-------------设置aop

<aop:config proxy-target-class="true">  
//对所有service包下面的service类进行注册切点
		<aop:pointcut id="servicePointcut" expression="execution(* com.cx.service..*Service.*(..))"/> 
//引入配置的事务信息 
		<aop:advisor pointcut-ref="servicePointcut" advice-ref="serviceAdvice"/>
//引入切面类,在以servicePoincut为切点的事务处理前后执行的方法是:before方法和after方法
		<aop:aspect id="logAspect"  ref="LogAop">
			<aop:before method="before" pointcut-ref="servicePointcut"/>
			<aop:after method="after" pointcut-ref="servicePointcut"/>
		</aop:aspect>
 	</aop:config>

这样我们的Spring和Mybatis的配置信息就结束了。

让我们来配置SpringMvc的xml.......


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:36139次
    • 积分:937
    • 等级:
    • 排名:千里之外
    • 原创:52篇
    • 转载:23篇
    • 译文:0篇
    • 评论:18条
    最新评论