protostuff
1.5.0
Pustaka serialisasi java dengan dukungan bawaan untuk kompatibilitas maju-mundur (evolusi skema) dan validasi.
Untuk informasi lebih lanjut, kunjungi https://protostuff.github.io/docs/
< dependency >
< groupId >io.protostuff</ groupId >
< artifactId >protostuff-core</ artifactId >
< version >1.7.4</ version >
</ dependency >
< dependency >
< groupId >io.protostuff</ groupId >
< artifactId >protostuff-runtime</ artifactId >
< version >1.7.4</ version >
</ dependency >
public final class Foo
{
String name ;
int id ;
public Foo ( String name , int id )
{
this . name = name ;
this . id = id ;
}
}
static void roundTrip ()
{
Foo foo = new Foo ( "foo" , 1 );
// this is lazily created and cached by RuntimeSchema
// so its safe to call RuntimeSchema.getSchema(Foo.class) over and over
// The getSchema method is also thread-safe
Schema < Foo > schema = RuntimeSchema . getSchema ( Foo . class );
// Re-use (manage) this buffer to avoid allocating on every serialization
LinkedBuffer buffer = LinkedBuffer . allocate ( 512 );
// ser
final byte [] protostuff ;
try
{
protostuff = ProtostuffIOUtil . toByteArray ( foo , schema , buffer );
}
finally
{
buffer . clear ();
}
// deser
Foo fooParsed = schema . newMessage ();
ProtostuffIOUtil . mergeFrom ( protostuff , fooParsed , schema );
}
Jika Anda ingin menggunakan ini murni untuk menggantikan serialisasi Java (tidak ada kompatibilitas dengan protobuf), atur properti sistem berikut:
-Dprotostuff.runtime.always_use_sun_reflection_factory=true
-Dprotostuff.runtime.preserve_null_elements=true
-Dprotostuff.runtime.morph_collection_interfaces=true
-Dprotostuff.runtime.morph_map_interfaces=true
-Dprotostuff.runtime.morph_non_final_pojos=true
Anda juga dapat menyesuaikannya secara terprogram:
static final DefaultIdStrategy STRATEGY = new DefaultIdStrategy ( IdStrategy . DEFAULT_FLAGS
| IdStrategy . PRESERVE_NULL_ELEMENTS
| IdStrategy . MORPH_COLLECTION_INTERFACES
| IdStrategy . MORPH_MAP_INTERFACES
| IdStrategy . MORPH_NON_FINAL_POJOS );
Gunakan itu:
Schema < Foo > schema = RuntimeSchema . getSchema ( Foo . class , STRATEGY );
Java 1.6 atau lebih tinggi
Maven 3.2.3 atau lebih tinggi
mvn install && mvn eclipse:eclipse
# Open eclipse, import existing project, navigate to the protostuff module you're after, then hit 'Finish'.