第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

spring aop概念以及jdk的動態(tài)代理

標(biāo)簽:
Java

AOP(Aspect-Oriented Programming),又称为面向切面编程。作为一种编程思想,AOP是 OOP(Object-Oriented Programing面向对象编程)一种 补充和完善。

AOP相关的术语

1.0 关注点
关注点就是所关注的与业务无关的公共服务或系统级服务,如日志记录,权限检查,事务管理等。关注点通常称为横切关注点,表示要做什么。

2.0 连接点
连接点就是程序执行过程中明确的阶段点,如方法的调用或异常的抛出等。其实,关注点的功能就是添加到相应的连接点。因此,连接点表示在那里做。在spring aop中,一个连接点总代表一个方法的执行。

3.0增强
增强就是在特定的连接点处所执行的处理逻辑,也就是面向连接点注入代码。增强通常有称为增强处理,表示具体做什么。

3.1.0 Before Advice 前置处理,在连接点执行前处理。

3.2.0 AfterReturning Advice后置增强,在连接点成功执行后调用。

3.3.0 AfterThrowing Advice,异常增强,在连接点抛出异常后被调用。

3.4.0 Around Advice 环境增强,在连接点执行前与执行后被调用。

4.0 切入点
切入点就是可以插入增强的连接点。

image.png

Jdk的动态代理
AOP是基于代理实现的,代理分为2大类,静态代理与动态代理。静态代理是在编译时候生成的,动态代理是在运行的时候生成的。

下面看一个jdk的动态代理的deom。
jdk动态代理需要一个接口,以及其实现类。

定义接口 UserService

package dflx;

public interface UserService {
	
	public void add();
	
	public void serach();
	
}

以及其实现类UserImpl,和jdk动态代理类MyJdkProxy

public class UserImpl implements UserService {

	@Override
	public void add() {
	System.out.println(" add user");
	}

	@Override
	public void serach() {
	System.out.println("search user");

	}

}



class MyJdkProxy implements InvocationHandler{
	
	private UserService user;
	
	public MyJdkProxy(UserService user)
	{
		this.user=user;
	}
	
	public UserService createJDKProxy(){
		
		return (UserService) Proxy.newProxyInstance(user.getClass().getClassLoader(),
user.getClass().getInterfaces(),this);
		
	}

	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		if(method.getName().equals("add"))
		{
			System.out.println("记录日志");
			return method.invoke(user, args);
		}else {
			
			return method.invoke(user, args);
		}
	}

	
	
}

测试类 MyJdkTest 如下

package dflx;

import org.junit.Test;

public class MyJdkTest {
	
	@Test
	public void test() {
		//代理对象
		UserService user=new UserImpl();
		//创建代理
		MyJdkProxy myJdkProxy=new MyJdkProxy(user);
		
		UserService proxy=myJdkProxy.createJDKProxy();
		proxy.add();  //对add方法进行了增强
		proxy.serach();
		
	}

}

对add方法,进行了增强。
结果如下

记录日志
 add user
search user

點擊查看更多內(nèi)容
3人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消