protostuff
1.5.0
مكتبة تسلسل جافا مع دعم مدمج للتوافق مع الإصدارات السابقة (تطور المخطط) والتحقق من الصحة.
لمزيد من المعلومات، انتقل إلى 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 );
}
إذا كنت ستستخدم هذا فقط لاستبدال تسلسل Java (لا يوجد توافق مع protobuf)، فقم بتعيين خصائص النظام التالية:
-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
يمكنك أيضًا تخصيصه برمجيًا:
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 );
استخدمه:
Schema < Foo > schema = RuntimeSchema . getSchema ( Foo . class , STRATEGY );
جافا 1.6 أو أعلى
مخضرم 3.2.3 أو أعلى
mvn install && mvn eclipse:eclipse
# Open eclipse, import existing project, navigate to the protostuff module you're after, then hit 'Finish'.