/ / Parsovanie POJO na JSON pomocou JAX-RS a nepoužíva žiadny iný implementačný kód - jersey, cxf, jax-rs

Analýza POJO na JSON pomocou JAX-RS a nepoužíva sa žiadny iný implementačný kód - jersey, cxf, jax-rs

Pozeral som sa na internals dresu, na to ako tokonvertuje jednoduché POJO na Json. Jersey má rozhranie Providers, ktoré poskytnú zoznam kontextuResolvers vzhľadom na triedu a mediaType. akonáhle sa dostaneme do kontextuResolver, môžeme dostať Context a Marshaller z neho, ktoré sa môžu použiť na získanie reťazca json, ako ukážeme nižšie.

umožňuje predpokladať, že chceme serializovať Pojo "obj". kód bude vyzerať nasledovne

Providers ps = ...
ContextResolver<JAXBContext> resolver = ps.getContextResolver(obj.getClass(), MediaType.APPLICATION_JSON_TYPE);
JAXBContext ctx = resolver.getContext(obj.getClass());
ctx.createMarshaller().marshal(obj, writer);

Týmto spôsobom môžeme nakonfigurovať akékoľvek POJO, ktoré má platný kontextový riešiteľ json. ale otázkou je, ako dostaneme obsluhu pre poskytovateľov.

PS: Nekompiloval som tento kód, ale z toho, čo môžem vidieť zo zdroja, to je to, čo dres robí. O tom, prečo robím všetky tieto veci, takže môžeme premeniť objekt na JSON priamo s JAX-RS apis. namiesto použitia akéhokoľvek implementačného kódu.

odpovede:

1 pre odpoveď č. 1

V zdrojovej triede JAX-RS použite anotáciu @Context, aby ste Jerseyovi povedali, aby si výrobcov vstrekol:

@Context Producers producers;

0 pre odpoveď č. 2

Takže vaša otázka je: "ako nájsť poskytovateľov"?

Musíte napísať kód, aby ste našli triedy v triede, ktoré sú označené ako @Provider.