在service层,
1、事务没有配置成功,在一个方法中写两条insert语句,例如
insert()
wait(1000*60);//查看上一句是否插入到数据库中,如果插入则事务配置失败,否则配置成功
insert()
或者insert (合法)
insert(超出字段定义长度)
2、声明式事务好处
需要加入
aopalliance.jar
aspectjweaver.jar
这两个jar包选哟单独下载
dao层不用手动commit了。。。也不用手动开启事务了,直接在service中配置就好了
<aop:config> <aop:pointcut id="userDAO" expression="execution(public * cn.dao.IUserDAO.*(..))" /> <aop:advisor advice-ref="tx" pointcut-ref="userDAO"/> </aop:config>
在上面的代码中
execution 是方法运行
public 是指定public的方法,也可以不写直接:execution(* cn.dao.IUserDAO.*(..)
* 是任意返回值,可以有返回值,也可以是void没有返回值的方法
cn.dao.IUserDAO.* 是指定目录下的指定类任意方法
cn.dao.IUserDAO.insert* 是指定目录下的指定类insert开头的任意方法
cn.dao.IUserDAO.*.* 是指定目录下的任意类下的任意方法
cn.dao..*.* 是指定目录下的任意目录下任意类下的任意方法
(..) 是任何参数,可以是没有参数
execution(* com.*.*(..))
可以包含com.spring.dao.UserDao.inser(String u);
可以包含com.spring.dao.UserDao.delete(String u);
要点,最后必须有个*代表类和方法,中间..之间有*代表匹配所有的包