Spring基于AOP的事务管理(4)

 

public class Client { public static void main(String[] args) { //定义配置文件路径 String path = "com/jdbc/JdbcTemplateBeans.xml"; //加载配置文件 ApplicationContext applicationContext = new ClassPathXmlApplicationContext(path); //获取CreateTables实例 CreateTables tables = (CreateTables) applicationContext.getBean("createTables"); //创建t_user表 String create_user = "create table t_user(userid int primary key auto_increment, username varchar(20), password varchar(32))"; tables.createTable(create_user); //创建工资表,工资表的userid关联t_user表的userid String create_account = "create table account(userid int primary key auto_increment, account double, foreign key(userid) references t_user(userid) on delete cascade on update cascade)"; tables.createTable(create_account); //创建用户 User user1 = new UserFactory().createUser("张三", 1, "zhangsan"); User user2 = new UserFactory().createUser("李四", 2, "lisi"); User user3 = new UserFactory().createUser("王五", 3, "wangwu"); User user4 = new UserFactory().createUser("赵六", 4, "zhaoliu"); //获取用户数据访问对象 UserDao userDao = (UserDao) applicationContext.getBean("userDao"); System.out.println(userDao.addUser(user1)); System.out.println(userDao.addUser(user2)); System.out.println(userDao.addUser(user3)); System.out.println(userDao.addUser(user4)); //获取存款数据访问对象 AccountDao account = (AccountDao) applicationContext.getBean("accountDao"); account.addAccount(1, 100); account.addAccount(2, 290.5); account.addAccount(3, 30.5); account.addAccount(4, 50); AccountService accountService = (AccountService) applicationContext.getBean("accountService"); accountService.transfer(user1, user3, 10); } }

View Code

  最后的也是我们实现Spring AOP最关键的配置文件JdbcTemplateBeans.xml(偷了个懒,文件名字和上篇博客中的相同,忘了改名字了,希望大家见谅)。该配置文件如下:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans "> <!-- 配置数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 数据库驱动 --> <property name="driverClass" value="com.mysql.jdbc.Driver"/> <!-- 连接数据库的URL --> <property name="jdbcUrl" value="jdbc:mysql://localhost/User"/> <!-- 连接数据库的用户名 --> <property name="user" value="root"/> <!-- 连接数据的密码 --> <property name="password" value="123"/> </bean> <!-- 配置JDBC模板 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!-- 默认必须使用数据源 --> <property name="dataSource" ref="dataSource"/> </bean> <bean id="createTables" class="com.jdbc.CreateTables"> <!-- 通过setter方法实现JdbcTemplate对象的注入 --> <property name="jdbcTemplate" ref="jdbcTemplate"/> </bean> <bean id="userDao" class="com.jdbc.UserDaoImpl"> <property name="jdbcTemplate" ref="jdbcTemplate"/> </bean> <bean id="accountDao" class="com.jdbc.AccountDaoImpl"> <property name="jdbcTemplate" ref="jdbcTemplate"/> </bean> <bean id="accountService" class="com.jdbc.AccountServiceImpl"> <property name="accountDao" ref="accountDao"/> </bean> <!-- 事务管理器,依赖于数据源 --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 编写通知:对事务进行增强,需要对切入点和具体执行事务细节 --> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <!-- <tx:method> 给切入点添加事务详情 name:方法名称, *表示任意方法, do* 表示以do开头的方法 propagation:设置传播行为 isolation:隔离级别 read-only:是否只读 --> <tx:method name="*" propagation="REQUIRED" isolation="DEFAULT" read-only="false"/> </tx:attributes> </tx:advice> <!-- aop编写,让Spring自动对目标进行代理,需要使用AspectJ的表达式 --> <aop:config> <!-- 切入点 --> <aop:pointcut expression="execution(* com.jdbc.AccountServiceImpl.*(..))" id="txPointCut"/> <!-- 切面:将切入点和通知整合 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/> </aop:config> </beans>

  启动mysql数据库创建名称为User的数据库,然后运行该Java工程,输出如下所示:

Spring基于AOP的事务管理

  然后去mysql的User数据库中查看刚才生成的表如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/48ce693d2c441219e7c49a59012bc830.html