求助 springmvc @Transactional注解无效

在做springmvc+hibernate的一个小实验 向数据库中插入一条数据
@Transactional注解不起作用 数据没插入也没报错 在dao层手动开启事务可以插入到数据库
折腾了很久 也看过很多解决方案似乎都没有效果
以下是spring的配置文件:

<!-- 配置自动扫描的包 -->
    <context:component-scan
        base-package="com.wymund.ssh" use-default-filters="false">
        <!-- 扫描注解Repository -->
        <context:include-filter type="annotation"
            expression="org.springframework.stereotype.Repository" />
        <!-- 扫描注解Service -->
        <context:include-filter type="annotation"
            expression="org.springframework.stereotype.Service" />
        <!-- 下面设置不需要扫描的包(因为在springmvc文件中设置过了,springmvc扫描过的包这里不需要再扫描了) -->
        <context:exclude-filter type="annotation"
            expression="org.springframework.stereotype.Controller" />
        <context:exclude-filter type="annotation"
            expression="org.springframework.web.bind.annotation.ControllerAdvice" />
    </context:component-scan>

    <!-- 配置数据源 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!--配置DataSource 连接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClass}" />
        <property name="jdbcUrl" value="${jdbc.Url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

    <!-- 配置Hibernate相关属性 -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation"
            value="classpath:hibernate.cfg.xml"></property>
    </bean>

    <!-- 配置hibernate事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

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

springmvc的配置文件:

<context:component-scan base-package="com.wymund.ssh.controller" use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
    </context:component-scan>

    <mvc:annotation-driven></mvc:annotation-driven>

Dao层的add方法:

    @Override
    public void addStudent(Student student) {
//      Session session = HibernateUtils.getSession();
//      Transaction transaction = session.beginTransaction();
//      session.save(student);
//      transaction.commit();
//      session.close();

        HibernateUtils.getSession().save(student);
    }

service层的方法:

@Override
    @Transactional
    public void addStudent(Student student) {
        studentDao.addStudent(student);
    }

https://gitee.com/00fly/java-code-frame/blob/master/springboot-hbn/src/test/java/com/fly/test/CustomerServiceTest.java

把dao层实现改为HibernateJdbcTemplate对象完成,就可以提交添加
而且交给spring事务管理时,主要针对批量操作或者是一组操作(类似转账,同时修改两个信息),为了保证数据安全性,一旦出错就立即回滚
对于单一添加功能,对于事务管理看不到效果