黑马程序员技术交流社区
标题:
【厦门校区JavaEE就业6期-每日总结】Spring_day04
[打印本页]
作者:
厦门校区
时间:
2019-6-5 14:04
标题:
【厦门校区JavaEE就业6期-每日总结】Spring_day04
今天大家整理一下Spring的声明式事务,包括xml和注解
作者:
陈伟彬
时间:
2019-6-5 19:29
基于xml的声明式事务控制:
xml配置:
导入约束;
配置业务层和持久层的bean对象,并注入数据源;
配置数据源;
配置事务管理器:
tx:advice标签:设置DataSourceTransactionManager的bean对象;
id属性:事务管理器的标识
class属性:DataSourceTransactionManager的包路径;
property标签:注入数据源;
配置事务通知和属性:
tx:advice标签:开始事务通知的配置;
id属性:事务通知的标识;
transaction-manager属性:事务管理器;
tx:method标签:开始配置事务的属性
name属性:service层里需要增强的方法;
propagation属性:指定传播行为(默认值是REQUIRED);
isolation属性:指定隔离级别(默认值是DEFAULT);
read-only属性:指定事务是否只读(默认值是false);
timeout属性:指定超时时间(默认-1);
ollback-for属性:指定异常,除该异常都不回滚(默认都回滚);
no-rollback-for属性:指定异常,除该异常都回滚(默认都回滚);
配置切入点:
aop:pointcut标签:定义切入点
id属性:切入点的标识;
expression属性:切入点的表达式;
aop:advisor标签:关联事务的通知和切入点;
advice-ref属性:事务通知的标识;
pointcut-ref属性:切入点的标识;
持久层的实现类:
继承JdbcDaoSupport;
用JdbcDaoSupport的getJdbcTemplate()方法来执行SQL语句;
注:该方式配置较繁琐,但使用(一次配置终生有效)方便;
基于注解的声明式事务控制:
xml配置:
导入约束;
配置包扫描;
配置JdbcTemplate的bean对象,并注入数据源信息;
配置数据源;
配置事务管理器:
tx:advice标签:设置DataSourceTransactionManager的bean对象;
id属性:事务管理器的标识
class属性:DataSourceTransactionManager的包路径;
property标签:注入数据源;
开启spring对事务注解的支持:
tx:annotation-driven标签:开启注解支持;
transaction-manager属性:事务管理器
业务层实现类:
@Service注解:获取业务层的bean对象;
@Transactional注解:配置事务的属性
propagation属性:指定事务;
readOnly属性:指定是否只读;
...(如果各方法的事务属性不同,需要单独配置)
持久层实现类:
@Repository注解:获取持久层的bean对象;
@Autowired注解:定义变量JdbcTemplate 进行自动类型注入;
注:该方式配置方便,使用(事务的属性配置)较繁琐;
作者:
叶振鹏
时间:
2019-6-5 21:39
Spring的声明式事务,包括xml和注解:
xml方式:
1、配置事务管理器对象:DataSourceTransactionManager
2、配置事务的通知
此时我们需要导入事务的约束 tx名称空间和约束,同时也需要aop的
使用tx:advice标签配置事务通知
属性:
id:给事务通知起一个唯一标识
transaction-manager:给事务通知提供一个事务管理器引用
3、配置AOP中的通用切入点表达式
4、建立事务通知和切入点表达式的对应关系<aop:advisor>标签
5、配置事务的属性
是在事务的通知tx:advice标签的内部<tx:method>标签
注解方式:
1.xml配置事务管理器并注入数据源;
2.在业务层使用@Transational 注解;
@Rransactional (readOnly=true/false, propagation=Propagation. SUPPORTS/...)
3.在配置文件中开启spring 对注解事务的支持;
<!--开启spring对注解事务的支持-->
<tx:annotation-driven transaction-manager="transactionManager"/>
作者:
开心的小孩
时间:
2019-6-5 21:59
陈鹏涛
1.基于xml的spring的声明说事务流程:
导入约束
1.配置service层的对象:<bena id ='accountService' class="...."/>
2.配置dao层的对象: <bena id ='accounDao' class="...."/>
3.配置数据源
<bean id ='dataSource'
class='org.springframework.jdbc.datasource.DriverManagerDataSource'>
<property name=driver...
........url....
. .... username...
.... password...
</bena>
4.配置事务管理器
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
5.配置事务通知
tx:advice id="teDriver" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" read-only="false"/>
<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
6.配置AOP
2.基于注解
配置spring对象烧苗包路径下所有注解...
配置事务管理器....
配置事务开启...1.基于xml的spring的声明说事务流程:
导入约束
1.配置service层的对象:<bena id ='accountService' class="...."/>
2.配置dao层的对象: <bena id ='accounDao' class="...."/>
3.配置数据源
<bean id ='dataSource'
class='org.springframework.jdbc.datasource.DriverManagerDataSource'>
<property name=driver...
........url....
. .... username...
.... password...
</bena>
4.配置事务管理器
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
5.配置事务通知
tx:advice id="teDriver" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" read-only="false"/>
<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
6.配置AOP
2.基于注解
配置spring对象烧苗包路径下所有注解...
配置事务管理器....
配置事务开启...
作者:
廖艺铭
时间:
2019-6-5 23:00
今天大家整理一下Spring的声明式事务,包括xml和注解
xml:
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" read-only="false"/>
<tx:method name="find*" propagation="SUPPORTS" read-only="true"></tx:method>
</tx:attributes>
</tx:advice>
<!-- 配置aop-->
<aop:config>
<!-- 配置切入点表达式-->
<aop:pointcut id="pt1" expression="execution(* com.itheima.service.impl..(..))">/aop:pointcut
<!--建立切入点表达式和事务通知的对应关系 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"></aop:advisor>
</aop:config>
注解:
<!-- xml配置文件中开启spring对注解事务的支持-->
<tx:annotation-driven transaction-manager="transactionManager">/tx:annotation-driven
@Service("accountService")
@Transactional(propagation= Propagation.SUPPORTS,readOnly=true)//只读型事务的配置
public class AccountServiceImpl implements IAccountService{
@Autowired
private IAccountDao accountDao;
//需要的是读写型事务配置
@Transactional(propagation= Propagation.REQUIRED,readOnly=false)
@Override
public void transfer(String sourceName, String targetName, Float money) {
Account source = accountDao.findAccountByName(sourceName);
Account target = accountDao.findAccountByName(targetName);
source.setMoney(source.getMoney()-money);
target.setMoney(target.getMoney()+money);
accountDao.updateAccount(source);
accountDao.updateAccount(target);
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2