案例 Spring的事務的AOP管理

2021-09-28 19:53:19 字數 3795 閱讀 7458

廢話依舊不多說,直接上**

dao層

介面

public

inte***ce

accountdao

實現類@repository

("accountdao"

)public

class

accountdaoimpl

implements

accountdao

public

void

deteletaccount

(int id)

throws sqlexception

public

void

updateaccount

(account account)

throws sqlexception

public account findbyid()

public list

findall

(account account)

@override

public account findbyname

(string name)

throws sqlexception

else

}}

domain層

public

class

account

public

intgetid()

public

void

setid

(int id)

public string getname()

public

void

setname

(string name)

public double getmoney()

public

void

setmoney

(double money)

}

service層

介面

public inte***ce accountservice

實現類@service("accountservice")

public class accountserviceimpl implements accountservice

public void deleteaccount(int id) throws sqlexception

public void transfor(string outacccount, string inaccount, double money) throws sqlexception catch (exception e)finally

//// }

account name = accountdao.findbyname(outacccount);

account name1 = accountdao.findbyname(inaccount);

system.out.println(name);

//轉賬

name.getmoney();

name.setmoney(name.getmoney() - 500);

// system.out.println(10/0);

name1.setmoney(name1.getmoney() + 500);

//更新money

accountdao.updateaccount(name);

accountdao.updateaccount(name1);

}}

工具類utils

/**

* @program: spring_03

* @description: 獲取連線的工具類

* @author: lhx

* @create: 2019-10-18 15:31

**/@component

("connectionutils"

)public

class

connectionutils

//獲取連線

public connection getconnection()

}catch

(sqlexception e)

return connection;}}

/** * @program: spring_03

* @description: 管理事務txmannger 事務管理器

* @author: lhx

* @create: 2019-10-18 16:01

**/@component

("transactionmanager"

)@aspect

public

class

transactionmanager

// @afterreturning("execution(* com.ityouxin.service.serviceimpl.*.*(..))")

public

void

commit()

throws sqlexception

// @afterthrowing("execution(* com.ityouxin.service.serviceimpl.*.*(..))")

public

void

rollback()

throws sqlexception

// @after("execution(* com.ityouxin.service.serviceimpl.*.*(..))")

public

void

close()

throws sqlexception

object object=null;

@around

("execution(* com.ityouxin.service.serviceimpl.*.*(..))"

)public object arround

(proceedingjoinpoint pjp)

throws sqlexception

catch

(sqlexception e)

catch

(throwable throwable)

finally

return object;

}}

測試類

*

@program

: spring_03

*@description

: 測試方法

*@author

: lhx

*@create

:2019-10

-1809:

44**/

@contextconfiguration

(classes=

)@runwith

(springjunit4classrunner.

class

)public

class

accountservicetest

@test

public

void

testtranfor()

catch

(sqlexception e)

}@test

public

void

testfindbyname()

catch

(sqlexception e)

}}

Spring 基於AOP的事務控制

事務是我們在進行資料操作的時候,要操作的事情,是乙個完整的單元,不可再分的。它包括幾個特性 原子性 一致性 可見性 隔離性 在spring容器中,事務是被封裝到事務管理器中,spring事務管理器的介面是org.springframework.transaction.platformtransact...

Spring 宣告式事務aop

我們故意在乙個方法裡先寫乙個插入,然後在寫乙個刪除語句。其中刪除語句的sql表達錯誤。雖然會報錯 告訴你刪除的sql語句錯誤,但是不會告訴你 插入操作成功了。也就是說 雖然程式因為錯誤沒有執行完,但是有一部分操作還是成功了。明顯不滿足我們的acid原則 原子性 一致性 隔離性 永續性 首先放上myb...

aop與spring事務的異常機制

今天在做自己的專案的時候,明明在配置檔案中配置了事務管理機制,然後想測試一下事務是否生效,一直不生效 後來發現原來是因為我自己定義的日誌切面把異常抓取了,但是沒有丟擲去 後來就把異常丟擲去就行了,最重要的是 切面裡面丟擲的異常必須是spring註解抓取的子類或者等於它,具體的看下 component...