MVC和springboot兩種環境下使用AOP

2021-10-09 14:57:40 字數 1988 閱讀 9879

aop是面向切面程式設計,適合把通用的物件行為整合在一起,寫成通知。 本文通過兩個例子介紹mvc和springboot兩種環境下使用aop

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

""xmlns:xsi=""

xmlns:context=""

xmlns:aop=""

xsi:schemalocation="

/spring-beans-3.1.xsd

/spring-aop-3.1.xsd">

-autoproxy/>

-scan base-package="com.dj.aop.boot.demo"

/>

user類,在aop中user類叫目標,hello是我們要切的方法叫連線點。

@component

public class user

}

useraspect

execution(* com.dj.aop.boot.demo.boot.user.*(..))是切點

around、before和after是通知

spring是在執行期把通知在符合切點的連線點,動態**目標。 這個過程叫織入

spring使用的是執行期織入,織入的方式是動態代練,由jdk動態**和cglib,兩者的區別的jdk動態**需要目標實現介面,cglib**需要目標類是可繼承的,連線點是可繼承的。

@aspect

@component

public class useraspect

@around(

"execution(* com.dj.aop.boot.demo.boot.user.*(..))"

) public object around(proceedingjoinpoint pjp) throws throwable

@after(

"execution(* com.dj.aop.boot.demo.boot.user.*(..))"

) public void after(

) @afterreturning(

"execution(* com.dj.aop.boot.demo.boot.user.*(..))"

) public void afterreturn(

)}

試一下**

public class mvcmain 

}

執行結果

before around

before

hiafterreturn

after

after around

我們可以看到執行的順序是先進入around說明around優先順序最高,再進入before,然後執行方法,再然後afterreturn,再然後是after,然後回到around方法

執行順序 around->before ->連線點 ->afterreturn或者afterthrow->after

使用註解作為切點

@restcontroller

public class usercontroller

}

切面

@aspect

@component

public class logaspect

atomiclong.incrementandget();

}return proceed;

}}

boot啟動類

SpringBoot配置屬性之MVC

主要是mvc相關的一些配置 spring.resources.cache period設定資源的快取時效,以秒為單位.spring.resources.chain.cache是否開啟快取,預設為 true spring.resources.chain.enabled是否開啟資源 handling c...

SpringBoot配置屬性之MVC

主要是mvc相關的一些配置 spring.resources.cache period設定資源的快取時效,以秒為單位.spring.resources.chain.cache是否開啟快取,預設為 true spring.resources.chain.enabled是否開啟資源 handling c...

SpringBoot配置屬性之MVC

目錄 mvcmessages mobile view resource multipart freemarker velocity thymeleaf mustcache groovy模板 springboot配置屬性系列 序 主要是mvc相關的一些配置 spring.resources.cache...