spring提供的的事務控制之純註解配置篇

2021-09-27 01:34:53 字數 3535 閱讀 3631

@configuration//宣告為配置類

@componentscan(basepackages = ) //元件掃瞄

@import()//載入子配置類 ==@configuration

@propertysource(value = )//讀取配置檔案 el表示式 @values

@enabletransactionmanagement//開啟事務註解驅動

@value("$")//對應@propertysource載入配置檔案的值,賦值,用el表示式

@bean(name="jdbctemplate")//用於方法,將方法返回值作為物件bean存入ioc容器

@autowired//自動注入,可配合@qualifier用,@qualifier還可單獨用於方法引數中,

方法引數中隱藏了@autowired註解

@qualifier(value = "ds")//方法引數,依賴注入,用於ioc容器中有同型別的bean,指明使用哪個bean

@service("accountservice")//指明為service層的bean

@repository("accountdao")//指明為dao層的bean

@transactional(propagation = propagation.supports,readonly = true)//事務通知環境配置

//spring整合junit

@runwith(springjunit4classrunner.class)//重寫main方法,從程式入口開始時獲取ioc容器

@contextconfiguration(classes = )//讀取配置類載入bean

主配置類:springconfiguration

/**

* @date 2019/9/11 1:51

* by mocar

*/@configuration//宣告為配置類

@componentscan(basepackages = ) //元件掃瞄

@import()//載入子配置類 ==@configuration

@propertysource(value = )//讀取配置檔案 el表示式 @values

@enabletransactionmanagement//開啟事務註解驅動

public class springconfiguration

子配置類 :

jdbcconfig
/**

* @date 2019/9/11 1:51

* by mocar

*///@configuration

public class jdbcconfig ")//對應@propertysource載入配置檔案的值,賦值,用el表示式

private string driver;

@value("$")

private string url;

@value("$")

private string username;

@value("$")

private string password;

@bean(name="jdbctemplate")

private jdbctemplate createjdbctemplate(@qualifier(value = "datasource") datasource datasource)

@bean(name = "datasource")

private datasource createdatasource()

}

transactionconfig
/**

* @date 2019/9/11 2:14

* by mocar

*///@configuration

public class transactionconfig

}

資料庫配置資訊:

jdbcconfig.properties
jdbc.driver=com.mysql.jdbc.driver

jdbc.url=jdbc:mysql://localhost:3306/eesy?characterencoding=utf-8&usessl=false

jdbc.username=root

jdbc.password=root

service層:事務控制應用

/**

* @date 2019/9/8 3:02

* by mocar

*/@service("accountservice")

@transactional(propagation = propagation.supports,readonly = true)

public class accountserviceimpl implements accountservice

@transactional(propagation = propagation.required,readonly = false)

public void transfer(string sourcename, string targetname, float money)

}

dao層:spring提供的jdbctemplate資料庫持久層操作

/**

* @date 2019/9/10 3:54

* by mocar

*/@repository("accountdao")

public class accountdaoimpl implements accountdao

return accountlist.get(0);

}public account findaccountbyname(string name)

if (accountlist.size()!=1)

return accountlist.get(0);

}public void updateaccount(account account)

}

spring整合junit測試

/**

* @date 2019/9/8 3:34

* by mocar

*/@runwith(springjunit4classrunner.class)

@contextconfiguration(classes = )

public class accountservicetest

}

測試通過!

spring 的事務控制

在spring開發過程中,我們用在類上打上 transactional 標籤來宣告當前類是乙個事務來控制的 當然也可以直接放在方法上 因為有service間的互相呼叫,導致多個事務操作同一張表的情況,目前解決就是把方法移到同一service中處理。還有乙個問題就是當service處理過程中報錯,事物...

Spring 事務 事務控制

0 註解 autowire 自動注入 url url b 1 spring專案中事務手動回滾 b transactionaspectsupport.currenttransactionstatus setrollbackonly 或者丟擲異常 transactional rollbackfor pu...

spring中的事務控制

我們之前學了動態 而關於實物這塊,在每個service方法中總就那麼幾句話,而且地方也是固定的,所以我們也考慮用動態 來解決它,只是在spring中,框架已經為我們寫好了通知類,我們直接配置就好了,跟之前aop配置稍微有點不同,事務有它自己的配法,不過也差不多,看 這是我寫的乙個方法,模擬轉賬 pu...