@repository
@scope
("prototype"
)public
class
userdao
implements
iuserdao
}
@configuration
@componentscan
("com.liaoxiang"
)//預設使用的jdk動態**
@enableaspectjautoproxy()
public
class
@component
@aspect
//@scope("prototype")
public
class
advice
/** * 增強方法
*/@before
("pointcutexecution1()"
)public
void
before()
}
public
class
test
}執行結果:
dao1:
1279584786
dao2:
-1597778003
增強方法執行,當前切面:1620890840
儲存成功,無返回值
增強方法執行,當前切面:1620890840
儲存成功,無返回值
當我們想要對某個類的某些方法進行增強的時候,而這類如果是多例的,上面的配置使用的切面卻是單例的,如果要使切面也是多例的,則在使用jdk動態**的情況下,需要作如下的配置
@component
@aspect
("perthis(target(com.liaoxiang.dao.impl.userdao))"
)public
class
advice
/** * 增強方法
*/@before
("pointcutexecution1()"
)public
void
before()
}
再次執行測試方法
dao1:
-1527878935
dao2:
-827515386
增強方法執行,當前切面:1648001170
儲存成功,無返回值
增強方法執行,當前切面:169663597
儲存成功,無返回值
注意:在使用預設jdk動態**的時候,配置切面的時候不能使用this
:
@aspect
("perthis(this(com.liaoxiang.dao.impl.userdao))"
)
如果使用的是cglib動態**,@enableaspectjautoproxy(proxytargetclass = true)
,則二者皆可。
Spring Aop 切面的應用 註解
本次記錄的是使用spring註解的方式來實現切面程式設計.實現環境 設定乙個分布式鎖,在修改資料的時候,判斷鎖,加鎖,完成資料修改後,釋放鎖.自定義乙個鎖註解,新增到方法上,在執行方法前根據引數設定鎖key,target retention retentionpolicy.runtime publi...
spring AOP 多個切面
切面 日誌 author w7 public class logger 切面 安全框架 author w7 public class security 切面 許可權 author w7 public class privilege public void setaccess string acces...
spring aop 切面測試
spring 配置 aop 切面類 package com.changhang.urgoo.impl.utils import com.changhang.urgoo.impl.entity.result.mesresult import com.changhang.urgoo.impl.entit...