spring aop原始碼解析之環境搭建

2021-10-16 18:39:58 字數 2123 閱讀 5989

前言

在前面講過了spring的ioc容器的建立以及bean的例項化過程,後面繼續介紹了springmvc的執行流程。至此,我們在web開發中最核心的兩個模組的大致執行流程我們已經有了乙個模糊的印象了

但是,web開發中不僅僅只是ioc對於bean的管理以及我們的servlet的使用。在日常開發中,我們也需要做一些簡單的日誌,或者在crud中需要對資料庫的事務進行管理,還有對於一些業務需要進行快取也可以使用aop去統一處理,許可權認證呀(一般是在filter或者interceptor中去做的),資料庫資源切換等等,都可以使用aop去做。aop可以將我們與核心業務無關的一些**分離開,統一去包裝,來重複去使用。

首先開始搭建乙個最簡單的aop功能。 這裡我們就是用全註解的方式了。

mainconfig

/**

* @author 蒙ym

* @date 2021/1/20

*/@componentscans()

//開啟aop功能!!!這個註解很重要!!!核心註解!!!

@enableaspectjautoproxy

public

class

aopconfig

mainconfig非常簡單,配置包掃瞄的路徑,開啟aop功能就可以了。

由於我們指定就是載入這個aopconfig,所以@configuration註解都不需要。

logprintaspect

/**

* @author 蒙ym

* @date 2020/12/11

*/@aspect

@component

public

class

logprintaspect

;@before

("method()"

)public

void

before

(joinpoint joinpoint)

@after

("method()"

)public

void

afrer

(joinpoint joinpoint)

@around

("method()"

)public object arround

(proceedingjoinpoint pjp)

catch

(throwable e)

}}

這裡有兩個核心@aspect標註他是乙個切面類 @component將他加入到ioc容器中@pointcut裡面設定切點,也就是我們需要在哪乙個方法執行前後,先來去執行aop中的通用處理@before @after @around也就是在執行方法的前後等等先來執行這個註解標註的方法。

上面這一段看不懂沒關係,分析原始碼過後就知道他是幹嘛的了,不用去咬字眼,說乙個乙個的名詞的意思。

aopservice

@service

("aopservice"

)public

class

aopservice

}

主測試方法

/**

* @author 蒙ym

* @date 2021/1/20

*/public

class

}

直接看結果

注意,我的配置類沒有加@configuration。 所以@configuration與@component之間的區別到底是怎麼樣的?

從我們前面的分析來看,在spring中,他會將@component標註的類也當成配置類。所以具體的區別以後有時間了在深入分析吧。就我們目前分析的邏輯中,@component完全可以取代@configuration

Spring AOP 原始碼詳解

spring aop 是 spring 核心功能之一,日常的工作少不了和 aop 打交道 是時候有必要去了解 spring 對 aop 的封裝和其背後的原理,這樣子我們才能寫出更加高質量的 及產生 bug 的原因 什麼是 aop aop 的相關一些概念 spring aop 的使用方式 spring...

spring aop原始碼分析

面試中經常被問到什麼是aop,其實aop是一種技術實現,或者說是一種實現標準,實現aop的技術有多種,但是通常所說的aop,大家會不自覺的想到spring aop,因為spring aop被問了很多次。本文想從原始碼的執行流程上來簡單說說aop的實現原理。aop的底層技術其實就是大家熟知的 spri...

Spring原始碼解析之 Aop原始碼解析(2)

spring aop 更多的是oop開發模式的乙個補充,幫助oop以更好的方式來解決對於需要解決業務功能模組之上統一管理 的功能 以一副圖來做為aop功能的說明更直觀些。對於類似系統的安全檢查,系統日誌,事務管理等相關功能,物件導向的開發方法並沒有更好的解決方法 aop引入了一些概念。更多的是spr...