真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringFramework中DefaultAopProxyFactory的作用是什么

本篇文章為大家展示了SpringFramework中DefaultAopProxyFactory的作用是什么,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

目前創(chuàng)新互聯(lián)已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、房縣網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

    Springaop中的DefaultAopProxyFactory,先上一張圖,如下圖1

         SpringFramework中DefaultAopProxyFactory的作用是什么

                                                                                            圖1

    Springaop中使用DefaultAopProxyFactory來創(chuàng)建代理,它決定了何時使用JDK還是Cglib代理,實現(xiàn)如下List-1所示:

    List-1

public class DefaultAopProxyFactory implements AopProxyFactory, Serializable {

	@Override
	public AopProxy createAopProxy(AdvisedSupport config) throws AopConfigException {
		if (config.isOptimize() || config.isProxyTargetClass() || hasNoUserSuppliedProxyInterfaces(config)) {
			Class targetClass = config.getTargetClass();
			if (targetClass == null) {
				throw new AopConfigException("TargetSource cannot determine target class: " +
						"Either an interface or a target is required for proxy creation.");
			}
			if (targetClass.isInterface() || Proxy.isProxyClass(targetClass)) {
				return new JdkDynamicAopProxy(config);
			}
			return new ObjenesisCglibAopProxy(config);
		}
		else {
			return new JdkDynamicAopProxy(config);
		}
	}

	/**
	 * Determine whether the supplied {@link AdvisedSupport} has only the
	 * {@link org.springframework.aop.SpringProxy} interface specified
	 * (or no proxy interfaces specified at all).
	 */
	private boolean hasNoUserSuppliedProxyInterfaces(AdvisedSupport config) {
		Class[] ifcs = config.getProxiedInterfaces();
		return (ifcs.length == 0 || (ifcs.length == 1 && SpringProxy.class.isAssignableFrom(ifcs[0])));
	}
}

    List-1中,目標(biāo)對象擁有接口實現(xiàn)且沒設(shè)置proxyTargetClass=true,則使用JDK代理,此外如果目標(biāo)對象是個接口或者是代理類,則使用JDK代理,否則使用Cglib,有些人說設(shè)置了ProxyTargetClass=true會使用JDK代理,正常情況下是正確的,不過從源碼來看不一定——即使設(shè)置了ProxyTargetClass=true,如果目標(biāo)對象類是個接口或者是代理類,則使用使用的是JDK代理。

上述內(nèi)容就是SpringFramework中DefaultAopProxyFactory的作用是什么,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章名稱:SpringFramework中DefaultAopProxyFactory的作用是什么
轉(zhuǎn)載源于:http://weahome.cn/article/jhhpci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部