事务管理
事务管理器
<bean id="tx" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="druid"/>
</bean>
额外功能
<tx:advice id="txManager" transaction-manager="tx">
<tx:attributes>
<!--<tx:method name="可能切入事务的方法"/>-->
<!--<tx:method name="insertUser" isolation="DEFAULT" propagation="REQUIRED" read-only="false" rollback-for="Exception"/>-->
<tx:method name="insertUser" rollback-for="Exception"/>
<!-- * 剩余所有方法,name匹配是精确优先 -->
<tx:method name="*" propagation="SUPPORTS"/>
</tx:attributes>
</tx:advice>
编织
<aop:config>
<aop:pointcut id="po_tx" expression="execution(* com..UserServiceImpl.*(..))"/>
<aop:advisor advice-ref="txManager" pointcut-ref="po_tx"/>
</aop:config>
注解整合
DataSource—>SqlSessionFactory–>MapperScannerConfig–>service
DataSource–>TransactionManager
service+TransactionManager=proxy
常用的注解
@service业务专用
@repository Dao专用
@Controller web层专用
@@sope 用户控制bean的创建模式
@Autowired//private UserDao userDao//继续类型为当前属性自动注入
@resource
在Impl类上写出@service中时,相当于写了一个bean标签(id为首字母小写的实现类的类名),生命一个组件
事务
@transactional注解为当前所有方法都切入事务,作用等于:
<aop:config>
<aop:pointcut id="po_tx" expression="execution(* com..UserServiceImpl.*(..))"/>
<aop:advisor advice-ref="txManager" pointcut-ref="po_tx"/>
</aop:config>
```<tx:advice id="txManager" transaction-manager="tx">
<tx:attributes>
<!--<tx:method name="可能切入事务的方法"/>-->
<!--<tx:method name="insertUser" isolation="DEFAULT" propagation="REQUIRED" read-only="false" rollback-for="Exception"/>-->
<tx:method name="insertUser" rollback-for="Exception"/>
<!-- * 剩余所有方法,name匹配是精确优先 -->
<tx:method name="*" propagation="SUPPORTS"/>
</tx:attributes>
</tx:advice>
添加注解扫描
<context:component-scan base-package="com.qf"/>
额外功能
<tx:annotation-driven transaction-manager="tx"/>