當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
Spring-学习笔记08【面向切面编程AOP】
生活随笔
收集整理的這篇文章主要介紹了
Spring-学习笔记08【面向切面编程AOP】
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
- Java后端 學(xué)習(xí)路線 筆記匯總表【黑馬程序員】
目錄
01 AOP的概念
02 spring中的aop術(shù)語(yǔ)和細(xì)節(jié)
03 spring基于XML的AOP-編寫(xiě)必要的代碼
03.1、pom.xml
03.2、IAccountService.java
03.3、AccountServiceImpl.java
03.4、Logger.java
03.5、AOPTest.java
04 spring基于XML的AOP-配置步驟
05 切入點(diǎn)表達(dá)式的寫(xiě)法
05.1、bean.xml
06 四種常用通知類(lèi)型
07 通用化切入點(diǎn)表達(dá)式
08 spring中的環(huán)繞通知
09 spring基于注解的AOP配置
10 總結(jié)和作業(yè)安排
01 AOP的概念
02 spring中的aop術(shù)語(yǔ)和細(xì)節(jié)
通知的類(lèi)型03 spring基于XML的AOP-編寫(xiě)必要的代碼
03.1、pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.itheima</groupId><artifactId>day03_eesy_03springAOP</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.2.RELEASE</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.7</version></dependency></dependencies></project>03.2、IAccountService.java
package com.itheima.service;/*** 賬戶(hù)的業(yè)務(wù)層接口*/ public interface IAccountService {/*** 模擬保存賬戶(hù)*/void saveAccount();/*** 模擬更新賬戶(hù)** @param i*/void updateAccount(int i);/*** 刪除賬戶(hù)** @return*/int deleteAccount(); }03.3、AccountServiceImpl.java
package com.itheima.service.impl;import com.itheima.service.IAccountService;/*** 賬戶(hù)的業(yè)務(wù)層實(shí)現(xiàn)類(lèi)*/ public class AccountServiceImpl implements IAccountService {@Overridepublic void saveAccount() {System.out.println("執(zhí)行了保存.");}@Overridepublic void updateAccount(int i) {System.out.println("執(zhí)行了更新:" + i);}@Overridepublic int deleteAccount() {System.out.println("執(zhí)行了刪除.");return 0;} }03.4、Logger.java
package com.itheima.utils;/*** 用于記錄日志的工具類(lèi),它里面提供了公共的代碼*/ public class Logger {/*** 用于打印日志:計(jì)劃讓其在切入點(diǎn)方法執(zhí)行之前執(zhí)行(切入點(diǎn)方法就是業(yè)務(wù)層方法)*/public void printLog() {System.out.println("Logger類(lèi)中的pringLog方法開(kāi)始記錄日志了...");} }03.5、AOPTest.java
04 spring基于XML的AOP-配置步驟
05 切入點(diǎn)表達(dá)式的寫(xiě)法
05.1、bean.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><!-- 配置srping的Ioc,把service對(duì)象配置進(jìn)來(lái)--><bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"></bean><!--spring中基于XML的AOP配置步驟1、把通知Bean也交給spring來(lái)管理2、使用aop:config標(biāo)簽表明開(kāi)始AOP的配置3、使用aop:aspect標(biāo)簽表明配置切面id屬性:是給切面提供一個(gè)唯一標(biāo)識(shí)ref屬性:是指定通知類(lèi)bean的Id。4、在aop:aspect標(biāo)簽的內(nèi)部使用對(duì)應(yīng)標(biāo)簽來(lái)配置通知的類(lèi)型我們現(xiàn)在示例是讓printLog方法在切入點(diǎn)方法執(zhí)行之前執(zhí)行,所以是前置通知aop:before:表示配置前置通知method屬性:用于指定Logger類(lèi)中哪個(gè)方法是前置通知pointcut屬性:用于指定切入點(diǎn)表達(dá)式,該表達(dá)式的含義指的是對(duì)業(yè)務(wù)層中哪些方法增強(qiáng)切入點(diǎn)表達(dá)式的寫(xiě)法:關(guān)鍵字:execution(表達(dá)式)表達(dá)式:訪問(wèn)修飾符 返回值 包名.包名.包名...類(lèi)名.方法名(參數(shù)列表)標(biāo)準(zhǔn)的表達(dá)式寫(xiě)法:public void com.itheima.service.impl.AccountServiceImpl.saveAccount()訪問(wèn)修飾符可以省略void com.itheima.service.impl.AccountServiceImpl.saveAccount()返回值可以使用通配符,表示任意返回值* com.itheima.service.impl.AccountServiceImpl.saveAccount()包名可以使用通配符,表示任意包。但是有幾級(jí)包,就需要寫(xiě)幾個(gè)*.* *.*.*.*.AccountServiceImpl.saveAccount())包名可以使用..表示當(dāng)前包及其子包* *..AccountServiceImpl.saveAccount()類(lèi)名和方法名都可以使用*來(lái)實(shí)現(xiàn)通配* *..*.*()參數(shù)列表:可以直接寫(xiě)數(shù)據(jù)類(lèi)型:基本類(lèi)型直接寫(xiě)名稱(chēng) int引用類(lèi)型寫(xiě)包名.類(lèi)名的方式 java.lang.String可以使用通配符表示任意類(lèi)型,但是必須有參數(shù)可以使用..表示有無(wú)參數(shù)均可,有參數(shù)可以是任意類(lèi)型全通配寫(xiě)法:* *..*.*(..)實(shí)際開(kāi)發(fā)中切入點(diǎn)表達(dá)式的通常寫(xiě)法:切到業(yè)務(wù)層實(shí)現(xiàn)類(lèi)下的所有方法* com.itheima.service.impl.*.*(..)--><!-- 配置Logger類(lèi) --><bean id="logger" class="com.itheima.utils.Logger"></bean><!--配置AOP--><aop:config><!--配置切面 --><aop:aspect id="logAdvice" ref="logger"><!-- 配置通知的類(lèi)型,并且建立通知方法和切入點(diǎn)方法的關(guān)聯(lián)--><aop:before method="printLog" pointcut="execution(* com.itheima.service.impl.*.*(..))"></aop:before></aop:aspect></aop:config></beans>06 四種常用通知類(lèi)型
07 通用化切入點(diǎn)表達(dá)式
08 spring中的環(huán)繞通知
09 spring基于注解的AOP配置
?
10 總結(jié)和作業(yè)安排
通知的類(lèi)型總結(jié)
以上是生活随笔為你收集整理的Spring-学习笔记08【面向切面编程AOP】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Spring-学习笔记07【银行转账案例
- 下一篇: Spring-学习笔记09【JdbcTe