十九 SpringAOP切面的單例與多例

2021-09-28 19:22:06 字數 1759 閱讀 5509

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