@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...