最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Spring框架:面向切面編程,切點(diǎn)等面試時常問的術(shù)語,aop: before,aop:aspect等標(biāo)簽

2021-03-18 16:58 作者:詩書畫唱  | 我要投稿

導(dǎo)航:

邊看教程邊記錄的部分

面試時常用的術(shù)語

切點(diǎn)的理解(pointcut)

<aop: before>

<aop: after>

aop:after-throwing?

aop:before等相關(guān)標(biāo)簽的面向切面的運(yùn)用例子

aop:aspect等標(biāo)簽來模擬黑客抓,攔截用戶更新數(shù)據(jù)的游戲數(shù)據(jù)包的例子

5、SPRINGCORE框架_面向切面編程.ppt

aop:aspect

單詞:aspect方面



邊看教程邊記錄的部分 START



在訪問界面的時候,不可以直接的訪問,要進(jìn)行安全驗(yàn)證,確認(rèn)是登錄了的用戶后才可以訪問界面,沒登錄就想訪問就是非法訪問,就是沒登錄的就要跳到登錄界面。


在訪問界面的時候,不可以直接的訪問,要進(jìn)行安全驗(yàn)證,確認(rèn)是登錄了的用戶后才可以訪問界面,沒登錄就想訪問就是非法訪問,就是沒登錄的就要跳到登錄界面。



其實(shí)我認(rèn)為spring框架,面向切面編程等的作用就是“集中處理會常要修改的內(nèi)容,比如一些數(shù)據(jù),在配置文件用value賦值,要改數(shù)據(jù)時,改value等的值就可以”。切面是一種“類”。有時集中處理就效率更高了,省去找分散的部分。如果不用Spring框架等等,還可能遺漏處理。



其實(shí)我認(rèn)為spring框架,面向切面編程等的作用就是“集中處理會常要修改的內(nèi)容,比如一些數(shù)據(jù),在配置文件用value賦值,要改數(shù)據(jù)時,改value等的值就可以”。切面是一種“類”。有時集中處理就效率更高了,省去找分散的部分。如果不用Spring框架等等,還可能遺漏處理。



如果是每個步驟都用日志文件打印,那么出問題后,看日志文件就可以更快地知道錯在哪里。


如果是每個步驟都用日志文件打印,那么出問題后,看日志文件就可以更快地知道錯在哪里。




面試時常用的術(shù)語。

面試時常用的術(shù)語


切點(diǎn)的理解(pointcut)。

切點(diǎn)的理解。

可以看出了如果有更多類似考試,創(chuàng)業(yè)等的方法調(diào)用,但是要對應(yīng)地在調(diào)用這些方法等前或后調(diào)用鼓勵方法,使用原始地調(diào)用方法地話就會要重復(fù)用代碼調(diào)用鼓勵的方法。

這時候spring框架的作用就體現(xiàn)出了:使用面向切面,配置文件配置后可以減少代碼重復(fù)。

其實(shí)我發(fā)現(xiàn)和認(rèn)為很多強(qiáng)大和先進(jìn)的技術(shù)(比如一些框架)的話常用的作用之一就是:減少代碼重復(fù),像是是使用了“乘法結(jié)合律”。

可以看出了如果有更多類似考試,創(chuàng)業(yè)等的方法調(diào)用,但是要對應(yīng)地在調(diào)用這些方法等前或后調(diào)用鼓勵方法,使用原始地調(diào)用方法地話就會要重復(fù)用代碼調(diào)用鼓勵的方法。

這時候spring框架的作用就體現(xiàn)出了:使用面向切面,配置文件配置后可以減少代碼重復(fù)。

其實(shí)我發(fā)現(xiàn)和認(rèn)為很多強(qiáng)大和先進(jìn)的技術(shù)(比如一些框架)的話常用的作用之一就是:減少代碼重復(fù),像是是使用了“乘法結(jié)合律”。

execution:執(zhí)行

core:核心部分

配置文件中聲明切面的方法(在事務(wù)提交處理等中切面會常用,且其關(guān)鍵作用,所以很重要):



<aop: before>等等是spring框架中的“通知”的一種。

個人理解:本質(zhì)作用就是用對應(yīng)的標(biāo)簽來控制成自己規(guī)定的“何時,何處”來調(diào)用一些自己創(chuàng)建的并且為method中的值的方法。

關(guān)于<aop: before>標(biāo)簽的代碼的意思就是,在調(diào)用Student這個類中的exam方法之前(before),會調(diào)用在method中聲明的encourage方法。



關(guān)于<aop: before>標(biāo)簽的代碼的意思就是,在調(diào)用Student這個類中的exam方法之前(before),會調(diào)用在method中聲明的encourage方法。

同理的話,關(guān)于<aop: after>標(biāo)簽的代碼的意思就是在調(diào)用Student這個類中的createWork方法之后(after),會調(diào)用在method中聲明的encourage方法。

同理的話,關(guān)于<aop: after>標(biāo)簽的代碼的意思就是在調(diào)用Student這個類中的createWork方法之后(after),會調(diào)用在method中聲明的encourage方法。
用args傳參





邊看教程邊記錄的部分?END



aop:before等相關(guān)標(biāo)簽的面向切面的運(yùn)用例子?START




package com.SSHC.bean;


public class Student {

? ? public void exam(){

? ? System.out.println("正在考試,調(diào)用Student的exam方法。");

? ? }

? ??

? ? public void createWork(){

? ? System.out.println("正在創(chuàng)業(yè),調(diào)用Student的createWork方法。");

? ? }

? ??

? ? public void driverExam(){

? ? System.out.println("駕照考試,調(diào)用Student的driverExam方法,"

+ "\n int i = 1 / 0的異常來模擬駕照考試失敗。");

? ? int i = 1 / 0;

? ? }

}

package com.SSHC.bean;


public class Teacher {

? ? public void encourage(){

? ? System.out.println("奧里給,加油,"

? ? + "調(diào)用了Teacher類中的encourage鼓勵方法 ");

? ? }

}

package MainText;


import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;


import com.SSHC.bean.Game;

import com.SSHC.bean.Student;


public class Demo {


public static void main(String[] args) {

// TODO Auto-generated method stub

? ? ? ? ApplicationContext ctx =?

new ClassPathXmlApplicationContext("applicationContext.xml");

? ? ? ? Student s = (Student) ctx.getBean("s");

? ? ? ? //模擬考試前鼓勵:

? ? ? ? s.exam();

? ? ? ? //模擬創(chuàng)業(yè)失敗后鼓勵:

? ? ? ? s.createWork();

? ? ? ??

? ? ? ??

? ? ? ? //模擬考駕照科目三沒過后給鼓勵:

? ? ? ? s.driverExam();

? ? ? ??

? ? ? ??

}


}


<?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"

xmlns:tx="http://www.springframework.org/schema/tx"?

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans classpath:/org/springframework/beans/factory/xml/spring-beans-3.0.xsd

? ? ? ?http://www.springframework.org/schema/aop classpath:/org/springframework/aop/config/spring-aop-3.0.xsd

? ? ? ?http://www.springframework.org/schema/tx classpath:/org/springframework/transaction/config/spring-tx-3.0.xsd

? ? ? ?http://www.springframework.org/schema/context classpath:/org/springframework/context/config/spring-context-3.0.xsd">

? ? <bean id="s" class="com.SSHC.bean.Student"></bean>

? ? <bean id="t" class="com.SSHC.bean.Teacher"></bean>

? ??

? ? <bean id="game" class="com.SSHC.bean.Game"></bean>

? ? <bean id="hk" class="com.SSHC.bean.Hacker"></bean>

? ? <!-- 切面配置 -->

? ? <aop:config>

? ? ? ? <aop:aspect ref="t">

? ? ? ? ? ? <aop:before pointcut="execution(* com.SSHC.bean.Student.exam(..))"

? ? ? ? ? ? ? ? method="encourage"></aop:before>

? ? ? ? ? ? <aop:after pointcut="execution(* com.SSHC.bean.Student.createWork(..))"

? ? ? ? ? ? ? ? method="encourage"></aop:after>

? ? ? ? ? ? <aop:after-throwing pointcut="execution(* com.SSHC.bean.Student.driverExam(..))"

? ? ? ? ? ? ? ? method="encourage"></aop:after-throwing>

? ? ? ? </aop:aspect>

? ? ? ? <aop:aspect ref="hk">

? ? ? ? ? ? <aop:before pointcut="execution(* com.SSHC.bean.Game.sendData(String)) and args(data)"

? ? ? ? ? ? ? ? method="interData"></aop:before>

? ? ? ? </aop:aspect>

? ? </aop:config>

</beans>





aop:before等相關(guān)標(biāo)簽的面向切面的運(yùn)用例子END


aop:aspect等標(biāo)簽來模擬黑客抓,攔截用戶更新數(shù)據(jù)的游戲數(shù)據(jù)包的例子 START

package com.SSHC.bean;


public class Game {

//發(fā)送游戲數(shù)據(jù)包

? ? public void sendData(String msg){

? ? System.out.println("發(fā)送到服務(wù)器的數(shù)據(jù)是:" + msg);

? ? }

}

package com.SSHC.bean;


public class Hacker {

//攔截?cái)?shù)據(jù)

? ? public void interData(String data){

? ? System.out.println("攔截到的數(shù)據(jù)是:" + data);

? ? }

}

代碼等見前面的例子,前面的例子里有記錄


package MainText;


import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;


import com.SSHC.bean.Game;


public class Demo2 {


public static void main(String[] args) {

// TODO Auto-generated method stub

? ? ? ? ApplicationContext ctx =?

new ClassPathXmlApplicationContext("applicationContext.xml");

? ? ? ? //Student s = (Student) ctx.getBean("s");

? ? ? ? //考試前鼓勵

? ? ? ? //s.exam();

? ? ? ? //創(chuàng)業(yè)失敗后鼓勵

? ? ? ? //s.createWork();

? ? ? ? //考駕照科目三沒過

? ? ? ? //s.driverExam();

? ? ? ??

? ? ? ? Game g = (Game) ctx.getBean("game");

? ? ? ? g.sendData("對BOSS造成了1000點(diǎn)的傷害");

}


}



aop:aspect等標(biāo)簽來模擬黑客抓,攔截用戶更新數(shù)據(jù)的游戲數(shù)據(jù)包的例子 END

5、SPRINGCORE框架_面向切面編程.ppt START



SPRINGCORE框架

面向切面編程


概念的引入

思考以下的幾種情形: 1、如何在javaweb項(xiàng)目中實(shí)現(xiàn)用戶的安全驗(yàn)證。 2、在javaweb中處理中文亂碼問題。 3、在系統(tǒng)工程中,對每步操作都產(chǎn)生日志記錄。 4、對每個service類中的方法調(diào)用前都啟動一個事務(wù),調(diào)用后提交或者回滾事務(wù)。 在上面的情形中,分布于應(yīng)用中多處的功能被稱為橫切關(guān)注點(diǎn)。通常,這些橫切關(guān)注點(diǎn)從概念上是與應(yīng)用的業(yè)務(wù)邏輯分離的,但是往往又直接嵌入到應(yīng)用的業(yè)務(wù)邏輯中,面向切面編程(AOP)的目的就是將這些橫切關(guān)注點(diǎn)與業(yè)務(wù)邏輯分離。

什么是面向切面編程

橫切關(guān)注點(diǎn)可以理解為在工程需要多次使用的功能。如前面所述的4種情形,全部都是橫切關(guān)注點(diǎn)。 下圖展示了一個多模塊的應(yīng)用,每個模塊都有自己的核心功能,但是這些模塊也需要一些輔助功能,例如安全驗(yàn)證和事務(wù)管理,這些輔助功能就是橫切關(guān)注點(diǎn),如果將每個橫切關(guān)注點(diǎn)模塊化為特殊類,則這些類就被稱為切面。 面向切面編程的好處: 1、每個橫切關(guān)注點(diǎn)現(xiàn)在被集中處理了,不會再分散到多處代碼中。 2、service類更加的簡潔,因?yàn)樗鼈儸F(xiàn)在只需要關(guān)注核心功能的代碼,而輔助功能的代碼被轉(zhuǎn)移到切面中去了。

面向切面編程的術(shù)語

描述切面的常用術(shù)語有:通知(advice),切點(diǎn)(pointcut)和連接點(diǎn)(join point)。 通知:定義了切面是什么以及何時使用,即描述了切面要完成的工作以及什么時候執(zhí)行這個工作。spring中包含5種類型的通知。 1、Before,在方法被調(diào)用之前調(diào)用通知。 2、After,在方法被調(diào)用之后調(diào)用通知。 3、After-returning,在方法成功執(zhí)行之后調(diào)用通知。 4、After-throwing,在方法拋出異常后調(diào)用通知。 5、Around,通知包裹了被通知的方法,在被通知的方法調(diào)用之前和調(diào)用之后執(zhí)行自定義的行為。 連接點(diǎn):應(yīng)用通知的時機(jī)被稱為連接點(diǎn)。連接點(diǎn)可以是調(diào)用方法時、拋出異常時、甚至修改一個字段時。在spring中連接點(diǎn)總是方法調(diào)用時。 切點(diǎn):如果通知定義了切面的“什么”和“何時”,那么切點(diǎn)就定義了“何處”。也可以理解為被篩選后需要被通知的連接點(diǎn)。 切面:即通知與切點(diǎn)的結(jié)合,即定義切面的全部內(nèi)容:它是什么,在何時何處完成其功能。 織入:將切面應(yīng)用到目標(biāo)對象來創(chuàng)建新的代理對象的過程。切面在指定的連接點(diǎn)被織入到目標(biāo)對象中。

Spring中的AOP支持

Spring提供了4種AOP支持: ●基于代理的經(jīng)典AOP ●@AspectJ注解驅(qū)動的切面 ●純POJO切面 ●注入式AspectJ切面(適合Spring各版本) 注意:Spring只支持方法連接點(diǎn)

AspectJ的切點(diǎn)表達(dá)式語言

在Spring AOP中,需要使用AspectJ的切點(diǎn)表達(dá)式語言來定義切點(diǎn)。下表列出了Spring AOP所支持的AspectJ切點(diǎn)指示器。

在配置文件中聲明切面(一)

在Spring AOP的配置元素如下表

在配置文件中聲明切面(二)

檢查applicationContext.xml的beans標(biāo)簽中是否有以下的代碼。

xmlns:aop="http://www.springframework.org/schema/aop"

http://www.springframework.org/schema/aop

classpath:/org/springframework/aop/config/spring-aop-4.1.xsd

在配置文件中聲明切面(三)

1、創(chuàng)建Teacher類和Student類。

在配置文件中聲明切面(三)

2、在配置文件中聲明切面。

為通知傳遞參數(shù)

有時候通知不僅僅是對方法的簡單包裝,還需要校驗(yàn)傳遞給方法的參數(shù)值,為通知傳遞參數(shù)就比較有用了。下面看看如何為通知傳遞參數(shù)。創(chuàng)建一個模擬黑客截取游戲數(shù)據(jù)包的程序。 1、創(chuàng)建Game類和Hacker類。

為通知傳遞參數(shù)

2、配置application.xml文件。

3、進(jìn)行測試。




5、SPRINGCORE框架_面向切面編程.ppt END


Spring框架:面向切面編程,切點(diǎn)等面試時常問的術(shù)語,aop: before,aop:aspect等標(biāo)簽的評論 (共 條)

分享到微博請遵守國家法律
临漳县| 若尔盖县| 泽州县| 清徐县| 冕宁县| 锦屏县| 武宣县| 应用必备| 长兴县| 林周县| 阜城县| 威宁| 榆树市| 永平县| 武定县| 黄陵县| 海林市| 蒙自县| 伊春市| 济源市| 镇原县| 西畴县| 漠河县| 淅川县| 普定县| 肃南| 邢台县| 恩施市| 曲阜市| 双辽市| 绵竹市| 习水县| 河源市| 金寨县| 凤山市| 榆社县| 托克逊县| 盐亭县| 保山市| 中山市| 开阳县|