當前位置:首頁 » 代理許可 » 代理類

代理類

發布時間: 2020-11-22 15:35:36

『壹』 sap生成代理類報錯: 未知類型參考,是什麼原因

在SAP中,某些業務對象會有狀態的屬性,用來控制和約束該業務當前的操作。
比如PM模塊的工單和PS模塊的項目定義,狀態這個屬性並不存放在各個業務的業務表中,而是由SAP統一管理。

【系統狀態】
以I開頭,主數據表是TJ02,描述表TJ02T
表TJ04可以據業務對象號(如WBS是PRN),可以查出所有相關的狀態

【用戶狀態】
以E開頭,每個用戶狀態都關聯一個用戶參數文件,相同的狀態編碼在不用的參數文件下意義不用,
主數據表為TJ30, 文本表是TJ30T

對於每筆業務,都有一個唯一的對象編號,欄位名一般為OBJNR,存在在業務表中(AUFK, PROJ...)
JEST:存放了該對象編號的當前狀態
JCDS:存在對象狀態修改的歷史記錄

Function mole: STATUS_READ 讀出某個業務對象的當前狀態(注意包括業務進行中BUFFER的狀態)
STATUS_UPDATE 修改狀態(批量新增或者修改狀態)
I_CHANGE_STATUS 狀態更新(取消一個當前狀態,激活一個新的狀態)
補充一點,還有一個取項目的狀態描述的FUNCTION是:STATUS_TEXT_EDIT在【ABAP】項目相關開發中的一些經驗總結里有詳細的用法介紹。

『貳』 資料庫中代理類怎麼到實現類

$.ajax({
type:'POST',url:'submitcomment.php',timeout:2000,cache:true,
data:'dataid='+dataid+'&appid='+appid+'&name='+name.val()+'&txt='+txt.val()+'&openid='+openid,
error:function(msg){return false},
success:function(json, st){
if(json.result == 0){
alert('您的評論審核通過後,才會顯示出來!');
}else{ //否則審核通過,顯示出來
$("#comlistx0014jwh62k").html(json);

『叄』 如何獲得Java動態代理的代理類

AOP的攔截功能是由java中的動態代理來實現的。說白了,就是在目標類的基礎上增加切面邏輯,生成增強的目標類(該切面邏輯或者在目標類函數執行之前,或者目標類函數執行之後,或者在目標類函數拋出異常時候執行。不同的切入時機對應不同的Interceptor的種類,如BeforeAdviseInterceptor,AfterAdviseInterceptor以及ThrowsAdviseInterceptor等)。

那麼動態代理是如何實現將切面邏輯(advise)織入到目標類方法中去的呢?下面我們就來詳細介紹並實現AOP中用到的兩種動態代理。

AOP的源碼中用到了兩種動態代理來實現攔截切入功能:jdk動態代理和cglib動態代理。兩種方法同時存在,各有優劣。jdk動態代理是由Java內部的反射機制來實現的,cglib動態代理底層則是藉助asm來實現的。總的來說,反射機制在生成類的過程中比較高效,而asm在生成類之後的相關執行過程中比較高效(可以通過將asm生成的類進行緩存,這樣解決asm生成類過程低效問題)。還有一點必須注意:jdk動態代理的應用前提,必須是目標類基於統一的介面。如果沒有上述前提,jdk動態代理不能應用。由此可以看出,jdk動態代理有一定的局限性,cglib這種第三方類庫實現的動態代理應用更加廣泛,且在效率上更有優勢。。

1、定義介面和實現

[java] view plain print?
package com.meituan.hyt.test3.service;

public interface UserService {
public String getName(int id);

public Integer getAge(int id);
}

[java] view plain print?
package com.meituan.hyt.test3.service.impl;

import com.meituan.hyt.test3.service.UserService;

public class UserServiceImpl implements UserService {
@Override
public String getName(int id) {
System.out.println("------getName------");
return "Tom";
}

@Override
public Integer getAge(int id) {
System.out.println("------getAge------");
return 10;
}
}

2、jdk動態代理實現

[java] view plain print?
package com.meituan.hyt.test3.jdk;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class MyInvocationHandler implements InvocationHandler {
private Object target;

MyInvocationHandler() {
super();
}

MyInvocationHandler(Object target) {
super();
this.target = target;
}

@Override
public Object invoke(Object o, Method method, Object[] args) throws Throwable {
if("getName".equals(method.getName())){
System.out.println("++++++before " + method.getName() + "++++++");
Object result = method.invoke(target, args);
System.out.println("++++++after " + method.getName() + "++++++");
return result;
}else{
Object result = method.invoke(target, args);
return result;
}

}
}

[java] view plain print?
package com.meituan.hyt.test3.jdk;

import com.meituan.hyt.test3.service.UserService;
import com.meituan.hyt.test3.service.impl.UserServiceImpl;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

public class Main1 {
public static void main(String[] args) {
UserService userService = new UserServiceImpl();
InvocationHandler invocationHandler = new MyInvocationHandler(userService);
UserService userServiceProxy = (UserService)Proxy.newProxyInstance(userService.getClass().getClassLoader(),
userService.getClass().getInterfaces(), invocationHandler);
System.out.println(userServiceProxy.getName(1));
System.out.println(userServiceProxy.getAge(1));
}
}

運行結果

++++++before getName++++++
------getName------
++++++after getName++++++
Tom
------getAge------
10
3、cglib動態代理實現

Cglib是一個優秀的動態代理框架,它的底層使用ASM在內存中動態的生成被代理類的子類,使用CGLIB即使代理類沒有實現任何介面也可以實現動態代理功能。CGLIB具有簡單易用,它的運行速度要遠遠快於JDK的Proxy動態代理:

CGLIB的核心類:
net.sf.cglib.proxy.Enhancer – 主要的增強類
net.sf.cglib.proxy.MethodInterceptor – 主要的方法攔截類,它是Callback介面的子介面,需要用戶實現
net.sf.cglib.proxy.MethodProxy – JDK的java.lang.reflect.Method類的代理類,可以方便的實現對源對象方法的調用,如使用:
Object o = methodProxy.invokeSuper(proxy, args);//雖然第一個參數是被代理對象,也不會出現死循環的問題。

net.sf.cglib.proxy.MethodInterceptor介面是最通用的回調(callback)類型,它經常被基於代理的AOP用來實現攔截(intercept)方法的調用。這個介面只定義了一個方法
public Object intercept(Object object, java.lang.reflect.Method method,
Object[] args, MethodProxy proxy) throws Throwable;

第一個參數是代理對像,第二和第三個參數分別是攔截的方法和方法的參數。原來的方法可能通過使用java.lang.reflect.Method對象的一般反射調用,或者使用 net.sf.cglib.proxy.MethodProxy對象調用。net.sf.cglib.proxy.MethodProxy通常被首選使用,因為它更快。

[java] view plain print?
package com.meituan.hyt.test3.cglib;

import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

public class CglibProxy implements MethodInterceptor {
@Override
public Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
System.out.println("++++++before " + methodProxy.getSuperName() + "++++++");
System.out.println(method.getName());
Object o1 = methodProxy.invokeSuper(o, args);
System.out.println("++++++before " + methodProxy.getSuperName() + "++++++");
return o1;
}
}

[java] view plain print?
package com.meituan.hyt.test3.cglib;

import com.meituan.hyt.test3.service.UserService;
import com.meituan.hyt.test3.service.impl.UserServiceImpl;
import net.sf.cglib.proxy.Enhancer;

public class Main2 {
public static void main(String[] args) {
CglibProxy cglibProxy = new CglibProxy();

Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(UserServiceImpl.class);
enhancer.setCallback(cglibProxy);

UserService o = (UserService)enhancer.create();
o.getName(1);
o.getAge(1);
}
}

運行結果:

++++++before CGLIB$getName$0++++++
getName
------getName------
++++++before CGLIB$getName$0++++++
++++++before CGLIB$getAge$1++++++
getAge
------getAge------
++++++before CGLIB$getAge$1++++++

『肆』 微商,代理之類的真那麼掙錢么

哥們
我做微商兩年了
很辛苦的
說白了就是刷圖刷高大上的描述
為的是吸引眼球
你自己從上家拿貨200百
賣多少錢那是你的本事
很辛苦

『伍』 什麼是製造類、代理類、集成類供應商

顧名思義——所謂製造類供應商是指銷售自己生產製造的產品的供應商;內代理類供應商是指以代理容的名義銷售其他非自己生產製造的商品的供應商;集成類供應商則是指既銷售自己生產製造的商品,同時也代理銷售其他生產商生產製造的產品的供應商。

『陸』 「代理類跟被代理類實現同一個介面,然後我再調用代理類的方法的時候就不知道調用誰的方法,屏蔽細節」

問題:「代理類跟被代理類實現同一個介面,然後我再調用代理類的方法的時候就不知道調用誰的方法,屏蔽細節」。
回答:這句話的意思是說:代理類代替真實類(也就是這里的被代理類)履行職責,而你根本就不知道這個代理類代替的誰,也就是真實類被屏蔽了,方法的真實實現也被屏蔽了。

『柒』 什麼是spring代理類

代理就是幫助去做一件事 生活中你應該聽過代理人 吧, 和Java中的代理含義是一樣的。

比方說 你要記錄日誌, 在常規開發中,日誌的記錄 不屬於業務的一部分。 但是我們又希望記錄業務日誌 第一個我們想到的就是 在業務層寫日誌,理論上是沒問題的,實際也沒問題。但是卻產生了麻煩
如果後期維護的時候,別人看代碼的時候就會找不到那句是業務,那句是日誌,造成維護麻煩。這只是其中一點 而Java有2個很重要的特性, 各司其職和獨立性 ,這就要求了 日誌 和業務,應該分別處理,而不應該混淆在一起。 於是就有人提出了代理的概念, 代替業務操作類去在操作的業務的時候去記錄日誌 。

『捌』 java中的代理類一般在什麼時候使用呢

1.代理模式

代理模式的作用是:為其他對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個客戶不想或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。

代理模式一般涉及到的角色有:

抽象角色 :聲明真實對象和代理對象的共同介面;

代理角色 :代理對象角色內部含有對真實對象的引用,從而可以操作真實對象,同時代理對象提供與真實對象相同的介面以便在任何時刻都能代替真實對象。同時,代理對象可以在執行真實對象操作時,附加其他的操作,相當於對真實對象進行封裝。

真實角色 :代理角色所代表的真實對象,是我們最終要引用的對象。

代理模式使用原因和應用方面

(1)授權機制 不同級別的用戶對同一對象擁有不同的訪問權利,如Jive論壇系統中,就使用Proxy進行授權機制控制,訪問論壇有兩種人:注冊用戶和遊客(未注冊用戶),Jive中就通過類似ForumProxy這樣的代理來控制這兩種用戶對論壇的訪問許可權.

(2)某個客戶端不能直接操作到某個對象,但又必須和那個對象有所互動.
舉例兩個具體情況:
如果那個對象是一個是很大的圖片,需要花費很長時間才能顯示出來,那麼當這個圖片包含在文檔中時,使用編輯器或瀏覽器打開這個文檔,打開文檔必須很迅速,不能等待大圖片處理完成,這時需要做個圖片Proxy來代替真正的圖片.

如果那個對象在Internet的某個遠端伺服器上,直接操作這個對象因為網路速度原因可能比較慢,那我們可以先用Proxy來代替那個對象.

總之原則是,對於開銷很大的對象,只有在使用它時才創建,這個原則可以為我們節省很多寶貴的Java內存. 所以,有些人認為Java耗費資源內存,我以為這和程序編制思路也有一定的關系.

(3)現實中,Proxy應用范圍很廣,現在流行的分布計算方式RMI和Corba等都是Proxy模式的應用

『玖』 請問用什麼代理類型

如果選擇開淘寶肯定是不行了,淘寶自從2003年成立到現在已經有10多年的時間,而且截止現在開店的有上千萬賣家,在這樣競爭激烈的環境下是很難賺到錢的,不過可以嘗試一下第三代連鎖網店,不需要進貨和發貨,可以拓展分店,分店賣出商品也可以有錢賺,或許可以適合你

熱點內容
美發店認證 發布:2021-03-16 21:43:38 瀏覽:443
物業糾紛原因 發布:2021-03-16 21:42:46 瀏覽:474
全國著名不孕不育醫院 發布:2021-03-16 21:42:24 瀏覽:679
知名明星確診 發布:2021-03-16 21:42:04 瀏覽:14
ipad大專有用嗎 發布:2021-03-16 21:40:58 瀏覽:670
公務員協議班值得嗎 發布:2021-03-16 21:40:00 瀏覽:21
知名書店品牌 發布:2021-03-16 21:39:09 瀏覽:949
q雷授權碼在哪裡買 發布:2021-03-16 21:38:44 瀏覽:852
圖書天貓轉讓 發布:2021-03-16 21:38:26 瀏覽:707
寶寶水杯品牌 發布:2021-03-16 21:35:56 瀏覽:837