applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:component-scan base-package="cn.itcast.spring0909.jdbc.transaction.annotation"></context:component-scan>
<!--
dataSource
-->
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean>
<bean id="dataSource" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<!-- <property name="password" value="${jdbc.password}" /> -->
</bean>
<!--
jdbcTemplate
-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<!--
事务管理器
-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<!--
启动事务的注解解析器
-->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
public interface PersonDao {
public void savePerson();
}
@Repository("personDao")
public class PersonDaoImpl implements PersonDao{
@Resource(name="jdbcTemplate")
//这里这能保存jdbcTemplate变量的方式不能继承jdbcSupport
private JdbcTemplate jdbcTemplate;
@Override
public void savePerson() {
// TODO Auto-generated method stub
this.jdbcTemplate.execute("insert into person(pname) values('aa')");
int a = 1/0;
this.jdbcTemplate.execute("insert into person(pname) values('aa')");
}
}
public interface PersonService {
public void savePerson();
}
@Service("personService")
public class PersonServiceImpl implements PersonService{
@Resource(name="personDao")
private PersonDao personDao;
/**
* 注解的粒度比xml要细
*/
@Transactional(readOnly=false)//这才是重点
public void savePerson() {
// TODO Auto-generated method stub
this.personDao.savePerson();
}
}
上面的代码才是重点
public class PersonTest extends SpringHelper{
static{
path = "cn/itcast/spring0909/jdbc/transaction/annotation/applicationContext.xml";
}
@Test
public void test(){
PersonService personService = (PersonService)context.getBean("personService");
personService.savePerson();
}
}