Spring Framework と MyBatis を使用してアノテーションによる
宣言的トランザクション管理を行おうとしていますが、ロールバックされません。

設定に不備があると思うのですが、何が悪いか検討がつかない状態です。
不備などありましたらご指摘してくださると助かります。

コード修正してプログラムによるトランザクション管理も試したところ、こちらは可能でした。

【pom.xml】

<!-- 省略 -->
    <properties>
        <java-version>1.8</java-version>
        <org.springframework-version>4.0.3.RELEASE</org.springframework-version>
        <org.aspectj-version>1.6.10</org.aspectj-version>
        <org.slf4j-version>1.6.6</org.slf4j-version>
    </properties>
<!-- 省略 -->
        <!-- MyBatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>
         <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>1.2.2</version>
        </dependency>
<!-- 省略 -->

【root-context.xml】

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop ="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

    <!-- Root Context: defines shared resources visible to all other web components -->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
        <property name="driverClassName" value="org.postgresql.Driver" />
        <property name="url" value="jdbc:postgresql://****.com:5432/****" />
        <property name="username" value="****" />
        <property name="password" value="****" />
    </bean>

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>


    <tx:annotation-driven transaction-manager="transactionManager"/>

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath*:com/hatak/photomap/domain/mapper/*.xml" />
        <property name="typeAliasesPackage" value="com.hatak.photomap.domain.entity" />
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.hatak.photomap.domain.mapper" />
    </bean>
</beans>

【サービスクラス】

@Service
public class HomeServiceImpl implements HomeService {

    @Autowired
    private MessagesMapper messagesMapper;

    @Transactional(readOnly = false, rollbackFor = RuntimeException.class)
    public void execute(HomeServiceDto homeServiceDto) throws Exception {

        // DB更新
        MessagesEntity entity = new MessagesEntity();
        entity.setId(13);
        entity.setMessage(homeServiceDto.getMessage());
        int count = messagesMapper.update(entity);

        // 強制ロールバック
        if (count == 1) {
            throw new RuntimeException("ロールバックしてない");
        }
    }
}