사용자 정의 양식을 사용하는 직렬화 프록시?

사라 자보

직렬화 프록시 패턴을 사용하는 경우 writeObject포함하는 클래스에 대한 사용자 지정 메서드를 제공해야합니까 , 아니면 프록시 만 제공해야 합니까? 프록시에 대해 사용자 지정 양식을 사용해야합니까? Serialization에 대한 Effective Java의 장을 읽었지만 사용자 정의 양식과 프록시 패턴에 대해서는 명확하지 않았습니다.

스튜어트 마크

직렬화 프록시 패턴을 사용할 때 원래 클래스의 인스턴스는 "일반"직렬화 메커니즘을 사용하여 직렬화되지 않습니다. 따라서 원래 클래스에 writeObject구현이 있으면 호출되지 않습니다.

writeObject메서드 가 필요하지는 않지만 readObject원래 클래스에 메서드를 작성해야합니다 . 프록시를 도입하기 전에 직렬화 된 경우 클래스의 이전 직렬화 된 인스턴스가 외부에있을 수 있습니다. 또는 누군가가 원래 클래스의 일반적인 직렬화 된 형식 처럼 보이는 바이트 스트림을 위조했을 수 있습니다 . 이것을 역 직렬화하면 프록시를 우회하고 원래 클래스의 잘못된 인스턴스를 만들 수 있습니다. 이를 방지하려면 readObject원래 클래스 메서드 에서 무조건 예외를 throw하여 역 직렬화가 프록시를 우회하지 않도록합니다. (이는 Effective Java에 언급되어 있지만 여기서 반복해야한다고 생각하는 것이 중요합니다.)

직렬 프록시의 사용자 지정 형식의 경우 반드시 필요한 것은 아닙니다. 효과적인 Java 는 직렬 프록시 클래스가 기본 직렬 형식을 사용할 수있을만큼 간단하고 명확하게 설계 될 것을 제안합니다. 이것이 효과가 있다면 기본 양식을 사용할 수 있습니다. 그러나 내가보기 시작한 또 다른 패턴은 단일 직렬화 프록시가 여러 직렬화 가능 클래스의 프록시로 사용되는 경우입니다. 이 경우 프록시 클래스는 중첩 클래스가 아니라 동일한 패키지의 패키지 전용 클래스입니다. 프록시는 프록시 인 클래스에 따라 작성되는 직렬화 된 데이터를 변경할 수 있도록 사용자 정의 직렬화 된 양식을 원할 것입니다.

java.timeJDK에서 클래스 의 직렬화는 여러 데이터 클래스에 대한 단일 직렬 프록시를 사용하여이를 수행합니다. 참고 항목 Ser.java의 이 작업을 수행하는 방법을보기 위해 파일을. 그러나 이것은 Externalizable특별한 직렬화 메서드 대신 인터페이스를 사용 하고 읽기 및 쓰기를 수행하기 위해 데이터 클래스에 다시 위임하기 때문에 조금 더 복잡 합니다. 그러나 직장에서 원칙을 볼 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

개조 : GSON 사용자 지정 자식 목록 역 직렬화

분류에서Dev

개조 : GSON 사용자 지정 자식 목록 역 직렬화

분류에서Dev

사용자 정의 모양의 Konva 직렬화 및 역 직렬화

분류에서Dev

사용자 지정 목록을 JSON C #으로 직렬화

분류에서Dev

C # 직렬화를 사용하여 매우 사용자 지정 형식으로 직렬화하는 방법

분류에서Dev

자바 사용자 정의 연결 목록 직렬화

분류에서Dev

양식을 표시하는 사용자 정의 함수 호출

분류에서Dev

양식을 표시하는 사용자 정의 함수 호출

분류에서Dev

잭슨 역 직렬화는 사용자 정의 디시리얼라이저에 직렬화를 호출하지

분류에서Dev

사용자 정의 형식의 날짜를 역 직렬화

분류에서Dev

Jackson을 사용한 사용자 지정 JSON 직렬화 / 역 직렬화

분류에서Dev

GSON을 사용하여 열거 형의 사용자 지정 역 직렬화

분류에서Dev

Regex를 사용하여 문자열 내부의 직렬화 문자열을 폭발시키는 방법

분류에서Dev

NHibernate 응답을 통한 웹 API 사용자 정의 직렬화

분류에서Dev

jQuery는 양식 제출시 입력을 직렬화하지만 ajax는 사용하지 않습니다.

분류에서Dev

jQuery Ajax를 사용하여 양식을 직렬화하고 게시하는 방법

분류에서Dev

GSON을 사용한 사용자 지정 클래스 직렬화

분류에서Dev

유효하지 않은 JSON 프리미티브-사용자 정의 직렬화 / 비 직렬화

분류에서Dev

Jackson을 사용하여 역 직렬화하는 동안 목록 속성의 개체 목록 그룹화

분류에서Dev

잭슨 사용자 정의 직렬화 및 역 직렬화

분류에서Dev

사용자 지정 XmlSerialization을 사용하여 복잡한 개체 역 직렬화

분류에서Dev

Import-CliXml을 사용하여 사용자 지정 클래스 개체의 일반 목록을 역 직렬화하려면 어떻게해야합니까?

분류에서Dev

사용자 지정 형식 속성의 디자인 타임 직렬화

분류에서Dev

Gson을 사용하여 여러 유형의 목록 목록 역 직렬화

분류에서Dev

특정 구문을 사용하여 ActiveRecord에서 사용자 정의 클래스 직렬화

분류에서Dev

사용자 지정 데이터 형식 VB.net 직렬화

분류에서Dev

JSON 및 Python을 사용하여 객체 목록 직렬화 / 비 직렬화

분류에서Dev

YamlDotNEt 및 C #의 사용자 지정 형식 클래스를 사용하여 중첩 된 YAML 역 직렬화

분류에서Dev

YamlDotNet에서 직렬화 사용자 지정 형식을 지정하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    개조 : GSON 사용자 지정 자식 목록 역 직렬화

  2. 2

    개조 : GSON 사용자 지정 자식 목록 역 직렬화

  3. 3

    사용자 정의 모양의 Konva 직렬화 및 역 직렬화

  4. 4

    사용자 지정 목록을 JSON C #으로 직렬화

  5. 5

    C # 직렬화를 사용하여 매우 사용자 지정 형식으로 직렬화하는 방법

  6. 6

    자바 사용자 정의 연결 목록 직렬화

  7. 7

    양식을 표시하는 사용자 정의 함수 호출

  8. 8

    양식을 표시하는 사용자 정의 함수 호출

  9. 9

    잭슨 역 직렬화는 사용자 정의 디시리얼라이저에 직렬화를 호출하지

  10. 10

    사용자 정의 형식의 날짜를 역 직렬화

  11. 11

    Jackson을 사용한 사용자 지정 JSON 직렬화 / 역 직렬화

  12. 12

    GSON을 사용하여 열거 형의 사용자 지정 역 직렬화

  13. 13

    Regex를 사용하여 문자열 내부의 직렬화 문자열을 폭발시키는 방법

  14. 14

    NHibernate 응답을 통한 웹 API 사용자 정의 직렬화

  15. 15

    jQuery는 양식 제출시 입력을 직렬화하지만 ajax는 사용하지 않습니다.

  16. 16

    jQuery Ajax를 사용하여 양식을 직렬화하고 게시하는 방법

  17. 17

    GSON을 사용한 사용자 지정 클래스 직렬화

  18. 18

    유효하지 않은 JSON 프리미티브-사용자 정의 직렬화 / 비 직렬화

  19. 19

    Jackson을 사용하여 역 직렬화하는 동안 목록 속성의 개체 목록 그룹화

  20. 20

    잭슨 사용자 정의 직렬화 및 역 직렬화

  21. 21

    사용자 지정 XmlSerialization을 사용하여 복잡한 개체 역 직렬화

  22. 22

    Import-CliXml을 사용하여 사용자 지정 클래스 개체의 일반 목록을 역 직렬화하려면 어떻게해야합니까?

  23. 23

    사용자 지정 형식 속성의 디자인 타임 직렬화

  24. 24

    Gson을 사용하여 여러 유형의 목록 목록 역 직렬화

  25. 25

    특정 구문을 사용하여 ActiveRecord에서 사용자 정의 클래스 직렬화

  26. 26

    사용자 지정 데이터 형식 VB.net 직렬화

  27. 27

    JSON 및 Python을 사용하여 객체 목록 직렬화 / 비 직렬화

  28. 28

    YamlDotNEt 및 C #의 사용자 지정 형식 클래스를 사용하여 중첩 된 YAML 역 직렬화

  29. 29

    YamlDotNet에서 직렬화 사용자 지정 형식을 지정하는 방법은 무엇입니까?

뜨겁다태그

보관