ssm项目遇到问题汇总,ssm统一异常处理
目录
SSM配置了事务控制,但未生效。我的错误SSM事务配置不起作用,不回滚的几个原因总结了我的事务配置失败的一些原因。这里是使用的基本代码。
今天00-1010,使用ssm事务时,发现方法报错,事务没有回滚。过了很久,终于解决了。让我们记录一下,我使用的是编程式事务,也就是使用配置文件。
包,下面是springmvc.xml配置文件。
弹簧配置文件:applicationContext.xml
首先我们明确,spring扫描注入时,由于spring的上下文是父子容器,ContextLoaderListener监听器加载spring配置文件,产生父容器,mvc加载mvc的配置文件,产生子容器。当子容器扫描@Controller的程序集时,它也组装@Service注释的实例。因为@ Contoller实例依赖于@Service实例,所以当子容器中有@Service实例,而我们使用B/S或者C/S操作数据库时,如果子容器中有@Service实例,mvc会优先使用自己,也就是子容器中的@Service实例,但是@Service标注的实例,也就是一般的事务控制层,要由父容器进行初始化,以保证增强的事务处理,否则会丢失。
因此,我们需要确保子容器中没有@Service注释的实例。
00-1010所以有上面两个扫描,但是我的springmvc.xml配置文件有问题。我不明白上下文3360 include-filter的意思。
通俗点讲:
Context:exclude-filter用于设置黑名单。比如手机黑名单,黑名单里的人不能打电话。Context:include-filter用于设置白名单。手机白名单里的号码可以打进来,不在白名单和黑名单里的也可以打进来。所以需要设置白名单过滤,关闭默认过滤器,即使用-default-filters=" false ";然后他只扫描指定的评论。
就是这样。当然,由于我的@ Contoller注释的所有实例都在com.djw.controller包中,我还可以做以下事情。
00-1010我是小白。我之前没有把我的事情学好,所以在做项目的时候没有做太多的研究。现在这个项目差不多完成了。我不得不添加事务,但它总是不起作用。最后被匹配(复制)了。
00-1010 1.@ Transactional在使用这个注释的时候,我只是将这个注释直接添加到类中。后来发现少了点什么。我应该写@ Transactional(roll back for=exception . class)
2 . context : component-scan base-package= com . service /
批注扫描组件-扫描放错了位置。之前放在spring-mvc,后来看到别人博客说要放在spring-mybatis,就放过去了,还是不行。后来我发现spring-mvc里还有一个注释扫描组件——scan,然后我把它删除了,注释完美生效。
SSM配置了事务控制但没生效
春季-mybatis:
!-configure transaction manager-bean id= transaction manager class= org . spring framework . JDBC . data source . data source transaction manager property name= data source ref= dat as source //bean context : component-scan base-package= com . service /!-配置事务的批注模式-tx 3360批注驱动的事务管理器=事务管理器/serviceimpl:
@ Service @ Transactional(roll back for=Exception . class)公共类TestServiceImpl实现itest Service { @ Override public void del(int id)抛出Exception { address . delete(aid);int I=1/0;}}以上是我的亲身经历。希望能给大家一个参考,也希望大家能支持盛行的IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。