我正在使用mybatis 3开发Web应用程序,
Spring 3.1.1-发布。
我指的是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的切入点
当我将切入点配置到另一个bean时,它可以工作。
但是只是由
MapperFactoryBean
创建的对象。我想将AOP与MapperFactoryBean提供的数据访问层对象一起使用。
我该如何解决?
提前致谢
最佳答案
(1)指向com.musicovery.bookervery.dao.MemberDao的切入点,而不是MapperFactoryBean。
(2)MapperFactoryBean是Spring用来将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>