- 浏览: 123947 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
ZhaojieSmall:
www.baidu.com
Drools 5 模板技术应用(drools template) -
ZhaojieSmall:
...
Spring注解jar包中的类的问题 -
zoutuo:
其实不需要注销重启,执行 source /etc/profil ...
MAVEN_HOME的设置 -
duyangsss:
有可能是网络问题吗?你是否能通过IE在code.google上 ...
SVN之无法连接到服务器 -
localtest:
我在访问Googl SVN的时候也出现你这种情况,前天晚上还好 ...
SVN之无法连接到服务器
在spring配置hibernate的申明事务的时候,发现事务控制一直都不好使,关键配置如下:
spring的MVC的配置如下:
applicationContext.xml的配置如下:
在以上配置的情况下,无论我的service怎么配置@Transactional注解,都无效,如:
即使我在removeContact方法中添加只读控制readOnly = true,相关删除实体操作一样能够正常执行。
后面在网上搜了一些信息,问题在于spring在实例化@Controller类时,Spring会自动把关联的@Service(此@Service已做了@Transaction事务注解)类实例化,此时事务并未生效,导致@Transaction注解无效,事务未被注册。解决办法如下:
将spring的mvc配置中的以下信息:
修改为:
表示容器在使用注解加载控制层时,不实例化控制层以外的组件。
除此以外,也将applicationContext.xml文件中添加如下的配置:
意思就是说使用注解加载除控制层以外的组件,这时,在加载service层时事务就会关联在服务层上,相关的事务注解的配置也就生效了。
spring的MVC的配置如下:
<context:component-scan base-package="com.going"/> <context:annotation-config /> <!-- To enable @RequestMapping process on type level and method level --> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="marshallingConverter" /> <ref bean="jsonConverter" /> <ref bean="atomConverter" /> </list> </property> </bean> <!-- XML Converter --> <bean id="marshallingConverter" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"> <constructor-arg ref="jaxbMarshaller" /> <property name="supportedMediaTypes" value="application/xml" /> </bean> <bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> <property name="classesToBeBound"> <list> <value>com.going.sample.domain.Employee</value> <value>com.going.sample.domain.EmployeeList</value> </list> </property> </bean> <!-- JSON Converter --> <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json" /> </bean> <!-- ATOM Converter --> <bean id="atomConverter" class="org.springframework.http.converter.feed.AtomFeedHttpMessageConverter"> <property name="supportedMediaTypes" value="application/atom+xml" /> </bean> <!-- Client --> <bean id="restTemplate" class="org.springframework.web.client.RestTemplate"> <property name="messageConverters"> <list> <ref bean="marshallingConverter" /> <ref bean="jsonConverter" /> <ref bean="atomConverter" /> </list> </property> </bean> <!-- viewer --> <!-- xmlView --> <bean id="xmlView" class="org.springframework.web.servlet.view.xml.MarshallingView"> <constructor-arg ref="jaxbMarshaller" /> </bean> <!-- jsonView --> <bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /> <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <property name="mediaTypes"> <map> <entry key="json" value="application/json" /> <entry key="xml" value="application/xml" /> <entry key="html" value="text/html" /> </map> </property> <property name="viewResolvers"> <list> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" /> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/view/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </list> </property> </bean>
applicationContext.xml的配置如下:
<!-- 数据源的配置 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.databaseurl}" p:username="${jdbc.username}" p:password="${jdbc.password}" /> <!-- hibernate工厂类的配置 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation"> <value>classpath:hibernate.cfg.xml</value> </property> <property name="configurationClass"> <value>org.hibernate.cfg.AnnotationConfiguration</value> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${jdbc.dialect}</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.jdbc.fetch_size">25</prop> <prop key="hibernate.jdbc.batch_size">50</prop> <!-- dev --> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.generate_statistic">false</prop> <!-- cache --> <!--代表是否使用查询缓存,这里不使用,因为一般而言查询缓存的命中率并不是很高,所以我们没有 必要为每一个用户的查询缓存它的数据,所以这里设为false--> <prop key="hibernate.cache.use_query_cache">false</prop> <!--代表使用Hibernate的二级缓存--> <prop key="hibernate.cache.use_second_level_cache">false</prop> <!-- create db table --> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean>
在以上配置的情况下,无论我的service怎么配置@Transactional注解,都无效,如:
@Service @Transactional public class ContactServiceImpl implements ContactService { @Autowired private ContactRepository contactRepository; public ContactRepository getContactRepository() { return contactRepository; } public void setContactRepository(ContactRepository contactRepository) { this.contactRepository = contactRepository; } @Transactional(propagation=Propagation.REQUIRED) public void addContact(Contact contact) { contactRepository.addContact(contact); } public List<Contact> listContact() { return contactRepository.listContact(); } @Transactional(readOnly = true) public void removeContact(String id) { contactRepository.removeContact(id); } }
即使我在removeContact方法中添加只读控制readOnly = true,相关删除实体操作一样能够正常执行。
后面在网上搜了一些信息,问题在于spring在实例化@Controller类时,Spring会自动把关联的@Service(此@Service已做了@Transaction事务注解)类实例化,此时事务并未生效,导致@Transaction注解无效,事务未被注册。解决办法如下:
将spring的mvc配置中的以下信息:
<context:component-scan base-package="com.going" />
修改为:
<context:component-scan base-package="com.going"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> </context:component-scan>
表示容器在使用注解加载控制层时,不实例化控制层以外的组件。
除此以外,也将applicationContext.xml文件中添加如下的配置:
<context:component-scan base-package="com.going"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan>
意思就是说使用注解加载除控制层以外的组件,这时,在加载service层时事务就会关联在服务层上,相关的事务注解的配置也就生效了。
发表评论
-
https://www.aiplan365.com
2019-10-23 11:40 0https://www.aiplan365.com -
精通ORACLE
2015-10-09 00:12 0第一章 讲5大核心SQL语句 SELECT UPDATE I ... -
Mysqlbinlog使用
2014-07-04 01:10 10141、binlog 基本认识 MySQL ... -
MYSQL ERROR CODE 翻译
2014-06-18 14:56 827mysql error code(备忘) 转10 ... -
[转载]Spring与JCR集成
2014-02-25 16:36 933原文档地址:http://www.infoq.com/cn/a ... -
[转载]Spring与CDI生命周期的比较
2014-02-25 09:26 1052把容器中的对象绑定到某个范围(Scope)上并不是 CDI 的 ... -
从Maven仓库中导出jar包
2014-01-29 11:35 896从Maven仓库中导出jar包:进入工程pom.xml 所在的 ... -
Guvnor源码解析-专业术语说明
2014-01-29 10:22 878Category类别,对知识库或资产进行分类,方便查询Moud ... -
Guvnor源码解析-Jackrabbit自定义结点类型
2014-01-29 00:38 1008在Guvnor的guvnor-repository的src/m ... -
Websphere中静态资源的过虑
2012-11-15 15:37 3342公司有一个B/S的项目,其中视图层是使用JSP+JA ... -
spring工程JBoss移植的hibernate异常
2012-09-18 14:11 2614之前在tomcat7中开发了一个spring的web工程,其中 ... -
在EJB中执行CREATE SEQUENCE
2012-08-31 13:04 2026一个业务需求,需要在EJB服务中执行DDL语句创建序列号: ... -
Office文档转pdf
2012-03-28 21:54 1367由于某个项目的原因,需要将微软的文档,如:xls,doc,do ... -
SVN之无法连接到服务器
2012-01-30 23:25 8121当我在VPS中安装了一个SVN的服务器,并且将svn与ap ... -
Spring注解jar包中的类的问题
2011-12-08 19:06 5465在每一个SSH项目中,都会为持久层操作封装一套持久化操作接口, ... -
Eclipse常用插件安装指南
2011-11-18 23:12 835插件名称下载地址说明Properties Editorhttp ... -
使用数据库字典
2011-07-28 09:46 852简单数据库字典使用 SELECT T.table_name ... -
Cron表达式详解
2011-05-20 19:47 2397Cron 表达式格式 Quartz的cron表达式与 ... -
Oracle 创建 schema
2011-05-07 10:03 1098开始不是很明白,最近才搞清楚。schema就是一些数 ... -
关于svn的添加忽略
2011-05-06 12:58 3292当我们在使用svn对代码进行管理的时候,往往有一些目录或 ...
相关推荐
在Spring中配置Hibernate事务
spring mvc hibernate整合,采用MyEclipse自动生成包和配置文件,jar包可能有多余,但是不影响整体效果。服务器tomcat。数据库mysql。
在spring中配置hibernate事务
spring3,hibernate4 配置声明式事务管理(annotation方式)
spring整合hibernate实现事务处理 1.spring整合hibernate实现事务处理-注解方式 2.spring整合hibernate实现事务处理-XML方式
Spring+Hibernate 使用TransactionInterceptor声明式事务配置
Spring2.5+hibernate搞定分布式事务Spring2.5+hibernate搞定分Spring2.5+hibernate搞定分布式事务布式事务 第三部分
一个小实例工程,说的是spring3+hibernate4配置声明式事务管理(annotation方式)
项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 二、 项目目的: 整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + ...
前几天搞 Spring + Hibernate + Struts 事务配置 ,网上找了好多资料,不过好无语,大多都是 Ctrl + V,浪费俺的宝贵时间 现在我总结配出一套,给大家参考参考,可能有不足,请大家多多交流。 附:内有弹出...
一个实例小工程,说的是spring3+hibernate4怎么配置声明式事务管理(xml方式)
传播智客,为Spring集成的Hibernate配置二级缓存、cache.xml
HibernateSHibernateSpring数据库的事务HibernateSpring数据库的事务HibernateSpring数据库的事务pring数据库的事务
两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...
spring3、 hibernate4 配置声明式事务管理(annotation方式)
Spring+Hibernate注解声明式事务实例
一个简单的spring+hibernate+mysql 事务实例
Spring4.0+Hibernate4.0+Struts2.3整合案例:实现增删改查。 ===================== application.xml: xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
memcache的客户端,用maven构建,里有用hibernate-memcached与hibernate,spring3.0进行配置,也有与spring3.0单独配置。
spring mvc hibernate 实现事务管理 jar包管理用maven,启动服务器用jetty,里边还有memcached数据库,但是本例子没有用到。