Spring給通知傳遞引數

2021-10-22 03:36:48 字數 2898 閱讀 3287

切點

@override

public

void

printaccount

(account account)

catch

(exception ex)

切面

package com.itlearn.aspect;

import com.itlearn.domain.account;

import org.aspectj.lang.proceedingjoinpoint;

import org.aspectj.lang.annotation.*;

//定義此類為乙個切面:內含各種通知

//@aspect

public

class

accountaspect

//@before("printacc()")

public

void

before()

//@after("printacc()")

public

void

after

(account account)

//@afterreturning("printacc()")

public

void

afterreturining

(account account)

//@afterthrowing("printacc()")

public

void

afterthrowing()

public

void

around

(proceedingjoinpoint joinpoint)

catch

(throwable throwable)

system.out.

println

("around after");

}}

可見:afterreturining和after通知都有引數要求。

xml配置通知

"accountaspect"

class

="com.itlearn.aspect.accountaspect"

>

bean

>

<

aop:aspectj-autoproxy

proxy-target-class

="true"

/>

<

aop:config

>

<

aop:aspectid=

"accountaspect"

ref="accountaspect"

>

<

aop:pointcutid=

"printacc"

expression

="execution(* com.itlearn.service.iaccountservice.printaccount(..))"

/>

<

aop:before

method

="before"

pointcut-ref

="printacc"

/>

<

aop:after

method

="after"

pointcut

="execution(* com.itlearn.service.iaccountservice.printaccount(..)) and args(account)"

/>

<

aop:after-returning

method

="afterreturining"

pointcut

="execution(* com.itlearn.service.iaccountservice.printaccount(..)) and args(account)"

/>

<

aop:after-throwing

method

="afterthrowing"

pointcut-ref

="printacc"

/>

<

aop:around

method

="around"

pointcut-ref

="printacc"

/>

aop:aspect

>

aop:config

>

可見:before、after-throwing、around都是使用的切入點,而帶引數的兩個通知則使用的是自己配置的帶參的切點。

執行結果

before...

around before

列印account...

around after

account

afterreturning...

after.

..

<

aop:after

method

="after"

pointcut

="execution(* com.itlearn.service.iaccountservice.printaccount(..)) and args(account)"

/>

注意:

and的使用。

args(account)中引數account要和介面引數名一致,否則無法識別。

給執行緒傳遞引數

執行緒操作主要用到thread類,他是定義在system.threading.dll下。使用時需要新增這乙個引用。該類提供給我們四個過載的建構函式 以下引自msdn 我們如果定義不帶引數的執行緒,可以用threadstart 帶乙個引數的用parameterizedthreadstart。帶多個引數...

Mysql給in傳遞引數

情景 select from student where name in 李四 王五 張三 查詢學生表中name欄位是 李四 王五 張三 的資料需求 李四 王五 張三 這些字段需要前端傳過來且數量不確定方法 使用find in set name,第乙個引數是列名,第二個引數是字串型別的,接收傳遞的資...

如何給OPENQUERY傳遞引數

發現sql server裡,直接呼叫鏈結伺服器的函式是不可以的。create function func test userid int returns table asreturn select from 192.168.0.252 user dbo.func getdata userid go ...