0 0

spring 里面同时使用 注解事务 和 拦截器的 疑问30

        各位大家好,我在spring的配置文件里面 注册了注册了一个service的拦截器,然后我给这个service添加了一个事务的注解

结果在代码里面我的service的所有方法事务都失效了(如果把service的拦截器那段配置去掉,则事务成功),很奇怪,请大家帮忙看看,我的service拦截器配置以及事务配置如下:

 

<!--这里是配置了事务管理-->

<bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource">
        <constructor-arg>
            <ref local="dataSourceTarget" />
        </constructor-arg>
    </bean>
    <!--
        Configurer that replaces ${...} placeholders with values from a
        properties file
    -->
    <!--
        (in this case, JDBC-related settings for the dataSource definition
        below)
    -->
    <context:property-placeholder location="classpath:jdbc.properties" />
    <!--
        Local C3P0 DataSource that works in any environment See JPetStore for
        an example of using Apache Commons DBCP as alternative (Both
        DataSource implementations have a "close" method to be called on
        shutdown)
    -->
    <bean id="dataSourceTarget" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
        <property name="driverClass" value="${jdbc.driverClassName}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <property name="minPoolSize" value="${jdbc.miniPoolSize}" />
           <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/> 
           <property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>
           <property name="maxIdleTime" value="${jdbc.maxIdleTime}"/>
           <property name="acquireIncrement" value="${jdbc.acquireIncrement}"/>
           <property name="acquireRetryAttempts" value="${jdbc.acquireRetryAttempts}"/>
           <property name="acquireRetryDelay" value="${jdbc.acquireRetryDelay}"/>
           <property name="checkoutTimeout" value="${jdbc.checkoutTimeout}"/>
    </bean>
    <!--Transaction manager for a single JDBC DataSource -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <!--define '0' as PROPAGATION_REQUIRED -->
    <bean id="defaultTransactionDefinition"
        class="org.springframework.transaction.support.DefaultTransactionDefinition">
        <property name="propagationBehavior" value="0" />
    </bean>
   
    <tx:annotation-driven transaction-manager="transactionManager" /> 
   
    <!-- 配置jdbcTemplate -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource" />
    </bean>

 

 

<!--这里是配置了service的拦截器-->

<bean id="landMarkManagementServiceProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>com.sbl.dgpt.geoManage.service.LandMarkManagementService
            </value>
        </property>
        <property name="target">
            <ref bean="landMarkManagementService"/>
        </property>
        <property name="interceptorNames">
            <list>
                <value>logInterceptorAdvice</value>
            </list>
        </property>
    </bean>

 

 

 

 

2013年6月09日 19:56

1个答案 按时间排序 按投票排序

0 0

从你的用法上看是没有问题的。

建议你debug看下 可以按照如下文章看是否走了事务代理
http://jinnianshilongnian.iteye.com/blog/1487235

或者提供具体的测试用例,可以帮你分析下。


引用
结果在代码里面我的service的所有方法事务都失效了(如果把service的拦截器那段配置去掉,则事务成功)
这个失败了是什么意思? 抛异常 还是事务不起作用

2013年6月10日 17:10

相关推荐

    spring 注解事务管理

    以下是对"spring注解事务管理"这一主题的详细解释。 ### 1. Spring事务管理的基本概念 Spring事务管理主要分为两种方式:编程式事务管理和声明式事务管理。编程式事务管理是通过编写代码来控制事务的开始、提交、...

    springMVC+Mybatis3.1+spring3.1.2包含事务,注解,拦截器

    springMVC+Mybatis3.1+spring3.1.2(包含事务详解,代码诠释,含数据库文件...展示了增、删、改、查、注解、拦截器、spring事务配置(亲测成功),sql文 件!!赶紧来下载给好评!!! web project 完全可以跑起来!!!

    mybatis 拦截器 + spring aop切面 + spring事务+ 反射工具类

    例如,可能会有一个自定义的MyBatis拦截器用于分页查询,一个Spring AOP切面用于记录操作日志,Spring事务管理确保数据的一致性,而反射工具类可能用于动态加载配置或处理某些通用的反射任务。通过这些组件的组合,...

    ssh+aop+log4j+日志拦截器+注解

    标题中的"ssh+aop+log4j+日志拦截器+注解"涉及到的是Java Web开发中的几个核心组件和技术,这些技术在构建大型、分布式的企业级应用时常常被使用。下面将详细介绍这些知识点: 1. SSH (Spring, Struts, Hibernate)...

    Spring拦截器示例

    AOP拦截器在Spring中主要通过`HandlerInterceptor`接口或者`@AspectJ`注解来实现。下面我们将详细探讨这两种实现方式。 1. **基于`HandlerInterceptor`的拦截器** - `HandlerInterceptor`是Spring MVC中的一个接口...

    Spring Boot Aspect 切面 AOP 拦截器 Interceptor 监控control请求耗时

    在Spring Boot应用中,...综上所述,Spring Boot的AOP和拦截器机制为我们提供了一种灵活的方式来增强和监控应用程序的行为。通过正确地配置和使用拦截器,我们可以实现对控制层的精细控制,提高系统的可维护性和性能。

    spring mvc + spring + hibernate 全注解整合开发视频教程 04

    在实际开发中,我们还会用到Spring的其他功能,比如Spring MVC的拦截器(Interceptor)用于全局处理,`@ExceptionHandler`注解处理异常,以及Spring的单元测试支持。同时,我们还会关注性能优化,如缓存机制(如使用...

    spring MVC AOP注解方式如何拦截controller 例子

    在Spring中,我们可以使用AspectJ注解来声明切面,这些注解包括`@Aspect`、`@Before`、`@After`、`@Around`等,它们分别代表前置通知、后置通知、环绕通知等不同类型的拦截器。 1. **创建切面类** 首先,我们需要...

    springmvc(spring4版本)+自带登录和拦截器

    本项目是一个基于Spring 4的Spring MVC实现,内含登录功能和拦截器,可以直接运行,为开发者提供了一个快速开发的基础模板。 首先,让我们详细了解一下Spring MVC的核心概念: 1. **DispatcherServlet**:它是...

    dwr+spring 注解方式

    - `dwr.xml`:虽然可以使用注解减少XML配置,但DWR仍然需要一个基本的XML配置文件,用于设置全局参数和拦截器。 - 在`dwr.xml`中,可以使用`&lt;convert&gt;`标签配置转换器,将Java对象转换为JavaScript能理解的格式。 ...

    基于注解和Spring的多数据源配置和使用

    7. **数据源切换上下文**:在实际操作中,需要一个机制来控制数据源的切换,例如使用线程局部变量`ThreadLocal`存储当前数据源,或者通过拦截器来设置数据源上下文。 通过以上步骤,我们可以实现基于注解和Spring的...

    Struts2+spring注解配置简介

    在实际应用中,我们还可以利用Struts2的拦截器(Interceptor)和Spring的AOP结合,实现更灵活的业务逻辑处理。通过在Action类或方法上添加自定义注解,并编写相应的拦截器,可以实现如权限验证、日志记录等功能。 ...

    spring中注解的实现原理

    当事务方法被调用时,拦截器会检查方法上的`@Transactional`注解,根据其属性启动或加入合适的事务。 最后,Spring还支持自定义注解。你可以创建自己的注解,并使用`@ComponentScan`的`@Annotation`参数告诉Spring...

    shiro和spring整合,使用权限注解

    通过阅读和理解这些配置文件和代码,我们可以了解到如何在实际项目中实现Shiro与Spring的整合,以及如何利用权限注解进行权限控制。 总之,Shiro与Spring的结合提供了强大的安全控制能力,通过权限注解可以在不改变...

    spring和Struts2注解文档

    Spring注解主要应用于依赖注入、控制器定义、事务管理、缓存控制等方面。 ##### 1.1.1 注册注解处理器 Spring容器能够识别特定的注解,并通过注解处理器(Annotation Processor)来执行相应的操作。例如,`@...

    Spring3事务管理——使用@Transactional 注解.rar

    通过理解并熟练运用`@Transactional`注解,开发者可以更方便地管理和控制Spring应用中的事务,确保数据一致性,同时减少手动事务管理带来的复杂性。在实际开发中,根据项目需求灵活配置和使用这个注解,将极大地提高...

    在自定义spring aop中使用el获取拦截方法的变量值。

    标题中的“在自定义Spring AOP中使用EL获取拦截方法的变量值”指的是在Spring的面向切面编程(AOP)中,通过Expression Language(EL,表达式语言)来访问被拦截方法的局部变量值。这通常涉及到Spring的代理机制、...

    spring自定义注解实现拦截器的实现方法

    总结起来,通过定义一个自定义注解来标记需要拦截的方法,并通过AOP配置来指定拦截器的执行时机和方法,可以灵活地在Spring MVC应用中添加各种前置处理逻辑,而不影响核心业务代码的清晰和专注。这种方式不仅可以...

    SpringMVC拦截器例子详解

    - 使用Java配置时,可以通过`@EnableWebMvc` 注解启用Web MVC配置,并在`WebMvcConfigurer` 实现类中重写`addInterceptors()` 方法来注册拦截器。 3. **自定义拦截器**: - 自定义拦截器需要继承`...

    struts2.3+spring3.2+mybatis3.1整合注释行事务处理(含jar包)

    在这个整合项目中,使用了注释型的事务管理,这意味着事务的开启、提交和回滚都是通过在方法上添加特定的Spring注解(如@Transactional)来实现的。这种方式的优点在于代码更易读,无需在XML配置文件中进行繁琐的...

Global site tag (gtag.js) - Google Analytics