mybatis映射器工厂bean和aop

时间:2015-12-16 11:43:13

标签: java spring mybatis

我正在使用mybatis 3开发一个Web应用程序, Spring 3.1.1-RELEASE。 我指的是the documentation

MapperFactoryBean创建的数据访问层对象都不能指向AOP的切入点。

我编码弹簧配置如下:

<bean id="memberDao" name="memberDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
            <property name="mapperInterface" value="com.musicovery.bookervery.dao.MemberDao" />
            <property name="sqlSessionFactory" ref="sqlSessionFactory" />
        </bean>

<!-- AOP Aspect -->
<bean id="customSqlExceptionTranslator" class="com.musicovery.bookervery.service.exception.CustomSqlExceptionTranslator" />

<!-- AOP Configuration -->
<aop:config>
            <aop:advisor advice-ref="customSqlExceptionTranslator" pointcut="bean(memberDao)" />
        </aop:config>

使用此配置, Eclipse没有显示AOP的切入点标记

mark

当我将切入点配置为另一个bean时,它可以工作。 但只是由MapperFactoryBean创建的对象。

我想将AOP应用于MapperFactoryBean提供的数据访问层对象。

我该如何解决这个问题?

提前致谢

1 个答案:

答案 0 :(得分:2)

(1)切入com.musicovery.bookervery.dao.MemberDao,而不是MapperFactoryBean。 (2)MapperFactoryBean是弹簧用于将mybatis映射器包装到spring bean的适配器。

所以你可以这样做以实现交易aop:

<aop:config>
        <aop:pointcut id="txPointcut"
                      expression="execution(public * com.musicovery.bookervery.dao.*.*(..))"/>
        <aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice"/>
</aop:config>