Spring5(12) 基於註解的AOP配置

2021-10-06 22:27:48 字數 3030 閱讀 5653

@service

("accountservice"

)public

class

accountserviceimpl

implements

iaccountservice

@override

public

void

updateaccount

(int i)

@override

public

intdeleteaccount()

}

<?xml version="1.0" encoding="utf-8"?>

xmlns

=""xmlns:xsi

=""xmlns:aop

=""xmlns:context

=""xmlns:tx

=""xsi:schemalocation="

/spring-beans.xsd

/spring-tx.xsd

/spring-aop.xsd

/spring-context.xsd"

>

<

context:component-scan

base-package

="com.tzb"

>

context:component-scan

>

<

aop:aspectj-autoproxy

>

aop:aspectj-autoproxy

>

beans

>

/**

* 用於記錄日誌的工具類

*/@component

("logger"

)@aspect

// 表示當前類是乙個切面類

public

class

logger

// 前置通知

@before

("pt1()"

)public

void

beforeprintlog()

// 後置通知

@afterreturning

("pt1()"

)public

void

afterreturningprintlog()

// 異常通知

@afterthrowing

("pt1()"

)public

void

afterthrowingprintlog()

// 最終通知

@after

("pt1()"

)public

void

afterprintlog()

/** * 環繞通知

* 問題:切入點方法沒有執行,而通知方法執行了

* * 分析:

* 通過對比動態**中的環繞通知,發現動態**的環繞通知有明確的切入點方法呼叫,我們的方法沒有

* * 解決:

* spring 提供proceedingjointpoint ,該介面有乙個 proceed(),此方法就相當於明確呼叫切入點方法

* 該介面可以作為環繞通知的方法引數,在程式執行時,spring會為我們提供該介面的實現類供我們使用

*///@around("pt1()")

public object aroundprintlog

(proceedingjoinpoint pjp)

catch

(throwable t)

finally

}}

public

class

aoptest

}

/**

* 用於記錄日誌的工具類

*/@component

("logger"

)@aspect

// 表示當前類是乙個切面類

public

class

logger

// 前置通知

// @before("pt1()")

public

void

beforeprintlog()

// 後置通知

// @afterreturning("pt1()")

public

void

afterreturningprintlog()

// 異常通知

// @afterthrowing("pt1()")

public

void

afterthrowingprintlog()

// 最終通知

//@after("pt1()")

public

void

afterprintlog()

/** * 環繞通知

* 問題:切入點方法沒有執行,而通知方法執行了

* * 分析:

* 通過對比動態**中的環繞通知,發現動態**的環繞通知有明確的切入點方法呼叫,我們的方法沒有

* * 解決:

* spring 提供proceedingjointpoint ,該介面有乙個 proceed(),此方法就相當於明確呼叫切入點方法

* 該介面可以作為環繞通知的方法引數,在程式執行時,spring會為我們提供該介面的實現類供我們使用

基於註解的spring

spring ioc容器的2種形式 儲存bean的形式 獲取bean的形式 建立ioc容器物件 從ioc容器中獲取bean例項 student student student context.getbean student 儲存bean的形式 就是在方法名前加 bean註解,bean的id就是方法名...

spring 基於註解的spring配置

spring是乙個基於ioc和aop的結構j2ee系統的框架 ioc 反轉控制 是spring的基礎,inversion of control 簡單說就是建立物件由以前的程式設計師自己new 構造方法來呼叫,變成了交由spring建立物件 di 依賴注入 dependency inject.簡單地說...

Spring 基於註解的配置

從 spring 2.5 開始就可以使用註解來配置依賴注入。而不是採用 xml 來描述乙個 bean 連線,你可以使用相關類,方法或字段宣告的註解,將 bean 配置移動到元件類本身。在 xml 注入之前進行註解注入,因此後者的配置將通過兩種方式的屬性連線被前者重寫。註解連線在預設情況下在 spri...