您的位置:首页 > 编程语言 > Java开发

Spring3.0中的事务的配置方法

2013-08-22 17:53 357 查看
第一种配置方法:基于XML的事务管理

这种方法不需要对原有的业务做任何修改,通过在XML文件中定义需要拦截方法的匹配即可完成配置,要求是,业务处理中的方法的命名要有规律,比如setXxx,xxxUpdate等等。详细配置如下:

Xml代码

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes>

<tx:method name="*" propagation="REQUIRED"/>

<tx:method name="get*" read-only="true"/>
tx:attributes>
tx:advice>

<aop:config>

<aop:pointcut expression="execution (* com.iflysse.school.services.impl.*.*(..))" id="services"/>

<aop:advisor advice-ref="txAdvice" pointcut-ref="services"/>
aop:config>


第二中配置方法:基于@Transactional的事务管理

这种方法,只需要在Spring配置文件中定义一个事务管理对象(如DataSourceTransactionManager),然后加入节点,引用该事务管理对象,然后即可在需要进行事务处理的类和方法使用@Transactional进行标注。示例如下:

Spring配置XML文件

Xml代码

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


Java代码中@Transactional示例

Java代码

/**
* @author ZYWANG 2011-3-24
*/
@Service
@Transactional(propagation = Propagation.REQUIRED)
public class TeacherServicesImpl implements TeacherServices {
@Autowired
TeacherDao dao = null;

public TeacherDao getDao() {
return dao;
}

public void setDao(TeacherDao dao) {
this.dao = dao;
}

@Override
@Transactional(readOnly=true,propagation=Propagation.NEVER)
public List getAllTeachers() {
return getDao().getAllTeachers();
}

@Override
public void addTeacher(Teacher teacher) {
if(teacher.getId() > 0){
getDao().updateTeacher(teacher);
}else{
getDao().addTeacher(teacher);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: