aop:advisor标签,起到的是一个上关下联的作用
其中的advice-ref
属性的值实际上是事务管理器
相关的配置
其中的pointcut-ref
属性的值关联的是定义哪些类被spring的事务所管理。
<!-- 配置c3p0数据源的bean -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8"></property>
<property name="user" value="******"></property>
<property name="password" value="*******"></property>
<!-- initialPoolSize创建数据库连接池之后初始化的数据库的连接数,默认值3 -->
<property name="initialPoolSize" value="3"></property>
<!-- 连接池种可以存在的最大连接数,默认15 -->
<property name="maxPoolSize" value="10"></property>
<!-- 当连接池中的连接用完的时候,c3p0一次性创建的新的连接数 -->
<property name="acquireIncrement" value="2"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 这个属性是dataSource类型的数据,需要依赖注入 -->
<!-- ref是引用哪个 对象 -->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 配置事务管理器的bean
事务管理器DataSourceTransactionManager,适用于基于connection访问数据库的框架
目前有JdbcTemplate和mybatis
-->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 配置事务的通知
id是唯一的标识
transaction-manager,是指定使用的事务管理器的bean,值是管理器bean的id
-->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="update*" read-only="false" propagation="REQUIRED"/>
<tx:method name="setUser" read-only="false" propagation="REQUIRED"/>
<!-- propagation,事务的传播行为,默认值REQUIRED -->
<tx:method name="proUpdate*" read-only="false" propagation="REQUIRES_NEW"/>
</tx:attributes>
</tx:advice>
<!-- 事务的AOP配置 -->
<aop:config>
<!-- 根据表达式的配置,来管理相应的包的类的方法的事务 -->
<aop:pointcut expression="execution( * com.test.day46.TXDemo.*(..))" id="txpt"/>
<aop:pointcut expression="execution( * com.test.day47.PropagationDemo*.*(..))" id="propt"/>
<!--
advice-ref,事务通知的id
pointcut-ref,配置aop:pointcut的id
-->
<aop:advisor advice-ref="txAdvice" pointcut-ref="txpt"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="propt"/>
</aop:config>
<bean id="propagationDemo" class="com.test.day47.PropagationDemo">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>