1. 開始註解模式
2. 註解切面
再通知上面加上乙個註解@aspect
@aspect
public class myadvice
再通知的方法上面加上切點
五種
@before(表示式)@afterreturning @around
@after @afterthrowing@before("myadvice.pc()")
publicvoid before()
書寫表示式有兩種
1. 直接寫
@ before ("execution(*cn.hd.springproxyannotation.impl.*serviceimpl.*(..))")
public voidbefore(){
system.out.println("在目標物件方法前呼叫");
2. 配置乙個切點 呼叫該類的方法獲得切點
@pointcut("execution(* cn.hd.springproxyannotation.impl.*serviceimpl.*(..))")
publicvoid pc(){
@before("myadvice.pc()")
publicvoid before(){
system.out.println("在目標物件方法前呼叫");
spring是乙個容器
spring有乙個jar包提供了乙個叫做jdbctemplate模板所以他能對資料庫操作。
spring還提供了很多模板 針對hebernate,mybatis模板。jdbcemplate跟dbutols中的queryrunner極度相似
整合jdbc
1. 導包
2. c3p0,jdbc驅動包 spring-jdbc spring-tx
3 使用乙個jdbctemplate模板對資料庫進行操作,需要資料庫連線
給他連線兩種方式 1.connection 2.datasource
public void fun() throwspropertyvetoexception {
combopooleddatasource datasource = new combopooleddatasource();
datasource.setdriverclass("com.mysql.jdbc.driver");
datasource.setjdbcurl("jdbc:mysql://localhost:3306/springjdbc");
datasource.setuser("root");
datasource.setpassword("123");
jdbctemplate jdbctemplate = new jdbctemplate();
jdbctemplate.setdatasource(datasource);
string sql="insert intot_user(uname,ubalance) values ('白學光',12138)";
jdbctemplate.update(sql);
spring
管理物件的方式
使用spring管理物件開發,一定要搞清楚物件之間的依賴關係。
將對應的bean類配置到配置檔案當中 將屬性的注入寫好
jdbctemplateapi
增刪改:呼叫jdbctemplate update方法 如果有引數直接按順序寫在方法後面即可
jdbctemplate.update(sql, user.getuname(),user.getubalance());
@nullable
@override
public user maprow(resultset resultset, int i) throws sqlexception {
user user = new user();
user.setuname(resultset.getstring("uname"));
user.setubalance(resultset.getint("ubalance"));
user.setuid(resultset.getint("uid"));
return user;
return list;
spring
提供了乙個父類jdbcdaosupport這個父類中,提供了jdbctemplate模板
在實現dao類時可以直接使用。並且在配置bean時,依賴關係改變,dao類時直接依賴於
datasource
。db,properties 書寫配置檔案要注意 健名要加字首,避免和關鍵字重複
location是配置檔案的位址
獲得配置檔案的位址
platformtransactionmanager 幫助我們管理任意平台的事務
jdbc datasourcetransactionmanger
hibernate hibernatetransactionmanager
… …transactionmanager
(1) 一致性 (2)原子性(3)永續性 (4)隔離性
事務安全:
事務執行緒安全:髒讀 不可重複讀 幻讀 讀未提交
隔離級別: 1 2 4(讀已提交) 8
所有事務的操作有三步:
開啟事務
提交事務
回滾事務
spring管理事務 利用的是spring aop思維 將事務的操作織入到目標物件中
spring管理 事務的屬性
隔離級別 是否唯讀 事務的傳播行為(7種)
spring管理事務的方式:
(1) **式
1. 配置事務管理物件
2. 配置事務管理的模板
3. 在service中注入模板物件 然後呼叫模板物件的execute
@resource(name = "transactiontemplate")
privatetransactiontemplate tt;
@override
publicvoid transform(integer form, integer to, integer money) {
tt.execute(new transactioncallbackwithoutresult() {
@override
protected void dointransactionwithoutresult(transactionstatustransactionstatus) {
userdao.increase(to,money);
userdao.decrease(form,money);
(2)
xml配置
1. 事務管理的物件
2. 事務的通知
標籤名 tx:advice id給當前的事務起個標記 tran…配置剛剛的事務管理物件
配置引數:method name 可以是具體某個方法(方法名)比較麻煩
可以使用萬用字元的方法去配置
add* delate* update*get*
find* persist* remove*modify*
要求的你service的命名必須規範
isolation 隔離級別使用預設即可 4級別 default
propagation事務的傳播行為 required
read-only是否唯讀 如果查詢 true 否則為false
3. 將通知織入到目標物件 注意配置切面不再使用aop:aspect而是advisor
(3)
註解配置
1. 事務管理物件
2. 註解
3. 在想要設定事務的地方加上註解
@transactional(isolation =isolation.default,propagation = propagation.required,readonly = false)
這個註解有兩個位置
1.在類上面 該類中所有的方法都會使用以上引數的事務
2.方法名上面 該方法使用引數中的事務如果兩個都設定以方法名上面的事務為準
詳解spring與jdbc整合操作
先上一段簡單示例 public class mytemplate public void setdatasource datasource datasource public void insert string sql throws sqlexception dao類 public class p...
簡述jdbc,並且spring整合jdbc
首先需要寫好我們經常使用的crud方法,也稱為jdbc模板。在日常的開發中我們只要呼叫這些已經寫好的jdbc模板方法,就可以很好的加快編碼效率。如下 使用jdbc模板實現增刪改查 public class userdaoimpl extends jdbcdaosupport implements u...
Struts與Spring的整合
struts核心是mvc,struts與spring的整合就是把struts的action交給spring去管理,從而達到簡化程式的目的 一 配置spring上下文和監聽 配置spring上下文和監聽有兩種方式 方式一 web.xml web主要配置檔案 而主要用於監聽web的上下文,可用下面 代替...