spring基于注解和基于xml配置文件大全

基于注解的事务管理配置文件:
(用 切面类 去模拟的)

	<context:component-scan base-package="com.yidongxueyuan"></context:component-scan>
	
	
	
	<!-- 采用注解的方式 ,支持注解形式的aop配置-->
	<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
	
    
     <!-- 开启一个扫描属性上的注解-->
      <context:annotation-config/>
   <!-- 配置外置的数据源:  -->
   <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" >
         <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
         <property name="jdbcUrl" value="jdbc:mysql:///customer"></property>
         <property name="user" value="root"></property>
         <property name="password" value="root"></property>
    </bean>
   
   <!-- xml 开发 -->
   <bean id="accountDao" class="com.yidongxueyuan.spring.dao.impl.AccountDaoImpl">
     
        <property name="dataSource" ref="dataSource"></property>
   
   </bean>

  </beans> 

切面类的代码如下:

package com.yidongxueyuan.spring.utils;

import java.sql.Connection;
import java.sql.SQLException;

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Component("TransactionManager")
//告知spring该类是一个切面类
@Aspect
/**
 * 定义和事务相关的所有的方法: 
 * 事物的开启
 */
//设置一个通用的切点表达式


public class TransactionManager {
	private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
	

	public static Connection getConnection(){
		Connection conn = tl.get();
		if(conn == null){
			conn = C3P0Util.getConnection();
			tl.set(conn);
		}
		return conn;
		
	}
	
	@Pointcut(value="execution( * com.yidongxueyuan.spring.service.impl.AccountServiceImpl.*(..))")
	private void point1(){}
	@Before(value="point1()")
	public static void startTransaction(){
		try {
			Connection conn = getConnection();
			
			conn.setAutoCommit(false);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	@AfterReturning(value="point1()")
	public static void commit(){
		try {
			Connection conn = getConnection();
			
			conn.commit();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	@AfterThrowing(value="point1()",throwing="e")
	public static void rollback(){
		try {
		
			Connection conn = getConnection();
			
			conn.rollback();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	//释放链接:
   public static void release() {
		Connection conn = getConnection();
		try {
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
   }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方-教育技术博主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值